From 105b77ede80d73034659bbaaff7808a823b3c504 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 16 May 2024 22:31:33 +0000 Subject: [PATCH] Deploy to GitHub pages --- about.html | 2 +- about.page-vue-render.js | 2 +- contact.html | 2 +- contact.page-vue-render.js | 2 +- dg/architecture.html | 4 ++-- dg/architecture.page-vue-render.js | 4 ++-- dg/cli.html | 4 ++-- dg/cli.page-vue-render.js | 4 ++-- dg/devOpsGuide.html | 4 ++-- dg/devOpsGuide.page-vue-render.js | 4 ++-- dg/index.html | 2 +- dg/index.page-vue-render.js | 4 ++-- dg/learningBasics.html | 4 ++-- dg/learningBasics.page-vue-render.js | 4 ++-- dg/projectManagement.html | 4 ++-- dg/projectManagement.page-vue-render.js | 4 ++-- dg/report.html | 4 ++-- dg/report.page-vue-render.js | 4 ++-- dg/settingUp.html | 4 ++-- dg/settingUp.page-vue-render.js | 4 ++-- dg/styleGuides.html | 2 +- dg/styleGuides.page-vue-render.js | 4 ++-- dg/workflow.html | 4 ++-- dg/workflow.page-vue-render.js | 4 ++-- index.html | 2 +- index.page-vue-render.js | 2 +- showcase.html | 2 +- showcase.page-vue-render.js | 2 +- ug/authorConfigSyntax.html | 2 +- ug/authorConfigSyntax.page-vue-render.js | 4 ++-- ug/blurbs.html | 2 +- ug/blurbs.page-vue-render.js | 4 ++-- ug/cli.html | 4 ++-- ug/cli.page-vue-render.js | 4 ++-- ug/configFiles.html | 4 ++-- ug/configFiles.page-vue-render.js | 4 ++-- ug/customizingReports.html | 4 ++-- ug/customizingReports.page-vue-render.js | 4 ++-- ug/faq.html | 4 ++-- ug/faq.page-vue-render.js | 4 ++-- ug/generatingReports.html | 4 ++-- ug/generatingReports.page-vue-render.js | 4 ++-- ug/grantingWriteAccess.html | 2 +- ug/grantingWriteAccess.page-vue-render.js | 4 ++-- ug/index.html | 2 +- ug/index.page-vue-render.js | 4 ++-- ug/runSh.html | 2 +- ug/runSh.page-vue-render.js | 4 ++-- ug/sharingReports.html | 4 ++-- ug/sharingReports.page-vue-render.js | 4 ++-- ug/title.html | 2 +- ug/title.page-vue-render.js | 4 ++-- ug/troubleshooting.html | 4 ++-- ug/troubleshooting.page-vue-render.js | 4 ++-- ug/usingAuthorTags.html | 2 +- ug/usingAuthorTags.page-vue-render.js | 4 ++-- ug/usingReports.html | 4 ++-- ug/usingReports.page-vue-render.js | 4 ++-- ug/withGithubActions.html | 4 ++-- ug/withGithubActions.page-vue-render.js | 4 ++-- ug/withNetlify.html | 4 ++-- ug/withNetlify.page-vue-render.js | 4 ++-- ug/withTravis.html | 4 ++-- ug/withTravis.page-vue-render.js | 4 ++-- 64 files changed, 111 insertions(+), 111 deletions(-) diff --git a/about.html b/about.html index 1551092b48..7f33aab043 100644 --- a/about.html +++ b/about.html @@ -38,7 +38,7 @@ Committer [2018 Aug - 2018 Dec]
Contributor [2018 May - 2018 Aug]

Peh Xian Bin, Eugene


Role: Maintainer [2020 May - 2021 Jan]
Project Lead [2018 May - 2020 May]

Aditya Agarwal

Contributor [2018 May - 2018 Aug]

Apoorva Ullas

Contributor [2018 Aug - 2019 May]

Chelsey Ong Hee

Contributor [2018 Dec - 2019 May]

Gilbert Emerson

Contributor [2018 Dec - 2019 May]

Teo Ming Yi

Contributor [2018 Dec - 2019 May]

Jin Minjia

Role: Contributor [2019 May - 2019 Aug]

James Pang Mun Wai


Role: Committer [2020 May - 2021 Jan]
-Contributor [2019 May - 2020 May]

Lee Jin Yao


Role: Contributor [2019 May - 2020 May]

Chong Chee Yuan

Role: Contributor [2020 January - 2020 May]

Ni Tianzhen

Role: Contributor [2020 January - 2020 May]

Yash Chowdhary


Role: Contributor [2020 January - 2020 May]

Liu Yiwen

Role: Contributor [2019 August - 2021 May]

Tejas Bhuwania


Role: Contributor [2019 August - 2021 August]

Anubhav

Role: Contributor [2019 September - 2020 August]

Ang Ze Yu

Role: Contributor [2020 January - 2021 May]

Roland Yu Wenyang

Role: Contributor [2021 January - 2021 March]

+Contributor [2019 May - 2020 May]

Lee Jin Yao


Role: Contributor [2019 May - 2020 May]

Chong Chee Yuan

Role: Contributor [2020 January - 2020 May]

Ni Tianzhen

Role: Contributor [2020 January - 2020 May]

Yash Chowdhary


Role: Contributor [2020 January - 2020 May]

Liu Yiwen

Role: Contributor [2019 August - 2021 May]

Tejas Bhuwania


Role: Contributor [2019 August - 2021 August]

Anubhav

Role: Contributor [2019 September - 2020 August]

Ang Ze Yu

Role: Contributor [2020 January - 2021 May]

Roland Yu Wenyang

Role: Contributor [2021 January - 2021 March]

diff --git a/about.page-vue-render.js b/about.page-vue-render.js index 28532c8149..30cd1480a0 100644 --- a/about.page-vue-render.js +++ b/about.page-vue-render.js @@ -8,6 +8,6 @@ with(this){return _c('div',{attrs:{"id":"app"}},[_c('navbar',{attrs:{"type":"dar with(this){return _c('div',{attrs:{"id":"flex-body"}},[_c('div',{staticClass:"fixed-header-padding",attrs:{"id":"content-wrapper"}},[_c('h1',{staticClass:"display-3",attrs:{"id":"about-us"}},[_c('span',[_v("About us")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#about-us","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("RepoSense is a project based in the "),_c('a',{attrs:{"href":"http://www.comp.nus.edu.sg/"}},[_v("National University of Singapore, School of Computing")]),_v(", funded by a "),_c('em',[_v("Teaching Enhancement Grant")]),_v(" from the "),_c('a',{attrs:{"href":"https://nus.edu.sg/cdtl"}},[_v("NUS Center for Development of Teaching and Learning")]),_v(".")]),_v(" "),_c('h2',{attrs:{"id":"current-team"}},[_v("Current team"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#current-team","onclick":"event.stopPropagation()"}})]),_v(" "),_c('h3',{attrs:{"id":"damith-c-rajapakse"}},[_c('a',{attrs:{"href":"http://www.comp.nus.edu.sg/~damithch"}},[_v("Damith C. Rajapakse")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#damith-c-rajapakse","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('a',{attrs:{"href":"https://avatars.githubusercontent.com/u/1673303?s=150&v=4","target":"_self"}},[_c('img',{staticClass:"img-fluid",attrs:{"src":"https://avatars.githubusercontent.com/u/1673303?s=150&v=4","alt":""}})]),_c('br'),_v(" "),_c('strong',[_v("Role")]),_v(": Project Advisor")]),_v(" "),_c('h3',{attrs:{"id":"charisma-kausar"}},[_c('a',{attrs:{"href":"https://www.github.com/ckcherry23"}},[_v("Charisma Kausar")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#charisma-kausar","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_v("Role")]),_v(": Senior Developer [2024 January - ]"),_c('br'),_v("\nContributor [2022 December - 2024 January]"),_c('br')]),_v(" "),_c('h3',{attrs:{"id":"david-gareth-ong"}},[_c('a',{attrs:{"href":"https://www.github.com/vvidday"}},[_v("David Gareth Ong")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#david-gareth-ong","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_v("Role")]),_v(": Senior Developer [2024 January - ]"),_c('br'),_v("\nContributor [2023 January - 2024 January]"),_c('br')]),_v(" "),_c('h3',{attrs:{"id":"gokul-rajiv"}},[_c('a',{attrs:{"href":"https://github.com/gok99"}},[_v("Gokul Rajiv")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#gokul-rajiv","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_v("Role")]),_v(": Senior Developer [2024 January - ]"),_c('br'),_v("\nContributor [2022 January - 2024 January]"),_c('br')]),_v(" "),_c('h3',{attrs:{"id":"marcus-tang-xin-kye"}},[_c('a',{attrs:{"href":"https://www.github.com/MarcusTXK"}},[_v("Marcus Tang Xin Kye")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#marcus-tang-xin-kye","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_v("Role")]),_v(": Senior Developer [2024 January - ]"),_c('br'),_v("\nContributor [2023 January - 2024 January]"),_c('br')]),_v(" "),_c('h2',{attrs:{"id":"chang-si-kai"}},[_c('a',{attrs:{"href":"https://github.com/sikai00"}},[_v("Chang Si Kai")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#chang-si-kai","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_v("Role")]),_v(": Contributor [2023 Jan - ]"),_c('br')]),_v(" "),_c('h3',{attrs:{"id":"alvis-ng"}},[_c('a',{attrs:{"href":"https://www.github.com/supermii2"}},[_v("Alvis Ng")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#alvis-ng","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_v("Role")]),_v(": Contributor [2024 January - ]"),_c('br')]),_v(" "),_c('h3',{attrs:{"id":"george-tay-quan-yao"}},[_c('a',{attrs:{"href":"https://www.github.com/jonasongg"}},[_v("George Tay Quan Yao")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#george-tay-quan-yao","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_v("Role")]),_v(": Contributor [2024 January - ]"),_c('br')]),_v(" "),_c('h3',{attrs:{"id":"jonas-ong-si-wei"}},[_c('a',{attrs:{"href":"https://www.github.com/jonasongg"}},[_v("Jonas Ong Si Wei")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#jonas-ong-si-wei","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_v("Role")]),_v(": Contributor [2024 January - ]"),_c('br')]),_v(" "),_c('h3',{attrs:{"id":"poon-yip-hang-ryan"}},[_c('a',{attrs:{"href":"https://www.github.com/sopa301"}},[_v("Poon Yip Hang, Ryan")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#poon-yip-hang-ryan","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_v("Role")]),_v(": Contributor [2024 January - ]"),_c('br')]),_v(" "),_c('h2',{attrs:{"id":"past-members"}},[_v("Past Members"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#past-members","onclick":"event.stopPropagation()"}})]),_v(" "),_c('h3',{attrs:{"id":"wang-chao"}},[_c('a',{attrs:{"href":"https://github.com/fzdy1914"}},[_v("Wang Chao")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#wang-chao","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('a',{attrs:{"href":"https://avatars3.githubusercontent.com/u/35621726?s=150&v=4","target":"_self"}},[_c('img',{staticClass:"img-fluid",attrs:{"src":"https://avatars3.githubusercontent.com/u/35621726?s=150&v=4","alt":""}})]),_c('br'),_v(" "),_c('strong',[_v("Role")]),_v(": Project Lead [2021 Jan - 2021 Dec]"),_c('br'),_v("\nMaintainer [2020 May - 2021 Jan]"),_c('br')]),_v(" "),_c('h3',{attrs:{"id":"hsu-zhong-jun"}},[_c('a',{attrs:{"href":"https://github.com/dcshzj"}},[_v("Hsu Zhong Jun")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#hsu-zhong-jun","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('a',{attrs:{"href":"https://avatars.githubusercontent.com/u/27919917?s=150&v=4","target":"_self"}},[_c('img',{staticClass:"img-fluid",attrs:{"src":"https://avatars.githubusercontent.com/u/27919917?s=150&v=4","alt":""}})]),_c('br'),_v(" "),_c('strong',[_v("Role")]),_v(": Project Lead [2022 Jan - 2022 Dec]"),_c('br'),_v("\nCommitter [2021 June - 2021 Dec]"),_c('br')]),_v(" "),_c('h3',{attrs:{"id":"chan-ger-hean"}},[_c('a',{attrs:{"href":"https://github.com/gerhean"}},[_v("Chan Ger Hean")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#chan-ger-hean","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_v("Role")]),_v(": Committer [2022 Jan - 2022 Dec]"),_c('br')]),_v(" "),_c('h3',{attrs:{"id":"huang-chengyu"}},[_c('a',{attrs:{"href":"https://github.com/HCY123902"}},[_v("Huang Chengyu")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#huang-chengyu","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_v("Role")]),_v(": Project Co-Lead [2023 Jan - 2023 Apr]"),_c('br'),_v("\nSenior Dev [2023 Jan - 2023 Apr]"),_c('br'),_v("\nCommitter [2022 Jan - 2022 Dec]"),_c('br'),_v("\nContributor [2021 July - 2021 Dec]"),_c('br')]),_v(" "),_c('h3',{attrs:{"id":"chan-jun-da"}},[_c('a',{attrs:{"href":"https://github.com/chan-j-d"}},[_v("Chan Jun Da")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#chan-jun-da","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_v("Role")]),_v(": Project Co-Lead [2023 Apr- 2023 Dec]"),_c('br'),_v("\nSenior Dev [2023 Jan - 2023 Apr]"),_c('br'),_v("\nCommitter [2022 Jan - 2022 Dec]"),_c('br'),_v("\nContributor [2021 July - 2021 Dec]"),_c('br')]),_v(" "),_c('h3',{attrs:{"id":"tay-yi-hsuen"}},[_c('a',{attrs:{"href":"https://github.com/yhtMinceraft1010X"}},[_v("Tay Yi Hsuen")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#tay-yi-hsuen","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_v("Role")]),_v(": Senior Dev [2023 Jan - 2023 Apr]"),_c('br'),_v("\nCommitter [2022 Jan - 2022 Dec]"),_c('br'),_v("\nContributor [2021 July - 2021 Dec]"),_c('br')]),_v(" "),_c('h3',{attrs:{"id":"zhou-jiahao"}},[_c('a',{attrs:{"href":"https://github.com/zhoukerrr"}},[_v("Zhou Jiahao")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#zhou-jiahao","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_v("Role")]),_v(": Senior Dev [2023 Jan - 2023 Apr]"),_c('br'),_v("\nCommitter [2022 Jan - 2022 Dec]"),_c('br'),_v("\nContributor [2021 July - 2021 Dec]"),_c('br')]),_v(" "),_c('h3',{attrs:{"id":"ma-tanghao"}},[_c('a',{attrs:{"href":"https://github.com/harryggg"}},[_v("Ma Tanghao")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#ma-tanghao","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Main developer for the initial version [2017 May - 2018 May]")]),_v(" "),_c('h3',{attrs:{"id":"ong-shu-peng"}},[_c('a',{attrs:{"href":"https://github.com/ongspxm"}},[_v("Ong Shu Peng")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#ong-shu-peng","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('a',{attrs:{"href":"https://avatars0.githubusercontent.com/u/1430854?s=150&v=4","target":"_self"}},[_c('img',{staticClass:"img-fluid",attrs:{"src":"https://avatars0.githubusercontent.com/u/1430854?s=150&v=4","alt":""}})]),_c('br'),_v(" "),_c('strong',[_v("Role")]),_v(": Area Lead for UI [2018 Dec - 2019 May]"),_c('br'),_v("\nCommitter [2018 Aug - 2018 Dec]"),_c('br'),_v("\nContributor [2018 May - 2018 Aug]"),_c('br')]),_v(" "),_c('h3',{attrs:{"id":"tan-jun-an"}},[_c('a',{attrs:{"href":"https://github.com/yamidark"}},[_v("Tan Jun An")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#tan-jun-an","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('a',{attrs:{"href":"https://avatars3.githubusercontent.com/u/18352498?s=150&v=4","target":"_self"}},[_c('img',{staticClass:"img-fluid",attrs:{"src":"https://avatars3.githubusercontent.com/u/18352498?s=150&v=4","alt":""}})]),_c('br'),_v(" "),_c('strong',[_v("Role")]),_v(": Area Lead for Code Quality [2018 Aug - 2019 April]"),_c('br'),_v("\nCommitter [2018 May - 2018 Aug]"),_c('br')]),_v(" "),_c('h3',{attrs:{"id":"teng-yong-hao"}},[_c('a',{attrs:{"href":"https://github.com/yong24s"}},[_v("Teng Yong Hao")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#teng-yong-hao","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('a',{attrs:{"href":"https://avatars2.githubusercontent.com/u/2003406?s=150&v=4","target":"_self"}},[_c('img',{staticClass:"img-fluid",attrs:{"src":"https://avatars2.githubusercontent.com/u/2003406?s=150&v=4","alt":""}})]),_c('br'),_v(" "),_c('strong',[_v("Role")]),_v(":\nMentor [2018 Dec - 2020 May]"),_c('br'),_v("\nCommitter [2018 Aug - 2018 Dec]"),_c('br'),_v("\nContributor [2018 May - 2018 Aug]"),_c('br')]),_v(" "),_c('h3',{attrs:{"id":"peh-xian-bin-eugene"}},[_c('a',{attrs:{"href":"https://github.com/eugenepeh"}},[_v("Peh Xian Bin, Eugene")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#peh-xian-bin-eugene","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('a',{attrs:{"href":"https://avatars.githubusercontent.com/u/19277206?s=150&v=4","target":"_self"}},[_c('img',{staticClass:"img-fluid",attrs:{"src":"https://avatars.githubusercontent.com/u/19277206?s=150&v=4","alt":""}})]),_c('br'),_v(" "),_c('strong',[_v("Role")]),_v(": Maintainer [2020 May - 2021 Jan]"),_c('br'),_v("\nProject Lead [2018 May - 2020 May]"),_c('br')]),_v(" "),_c('h3',{attrs:{"id":"aditya-agarwal"}},[_c('a',{attrs:{"href":"https://github.com/adityaa1998"}},[_v("Aditya Agarwal")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#aditya-agarwal","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Contributor [2018 May - 2018 Aug]")]),_v(" "),_c('h3',{attrs:{"id":"apoorva-ullas"}},[_c('a',{attrs:{"href":"https://github.com/apoorva17"}},[_v("Apoorva Ullas")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#apoorva-ullas","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Contributor [2018 Aug - 2019 May]")]),_v(" "),_c('h3',{attrs:{"id":"chelsey-ong-hee"}},[_c('a',{attrs:{"href":"https://github.com/chel-seyy"}},[_v("Chelsey Ong Hee")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#chelsey-ong-hee","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Contributor [2018 Dec - 2019 May]")]),_v(" "),_c('h3',{attrs:{"id":"gilbert-emerson"}},[_c('a',{attrs:{"href":"https://github.com/emer7"}},[_v("Gilbert Emerson")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#gilbert-emerson","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Contributor [2018 Dec - 2019 May]")]),_v(" "),_c('h3',{attrs:{"id":"teo-ming-yi"}},[_c('a',{attrs:{"href":"https://github.com/myteo"}},[_v("Teo Ming Yi")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#teo-ming-yi","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Contributor [2018 Dec - 2019 May]")]),_v(" "),_c('h3',{attrs:{"id":"jin-minjia"}},[_c('a',{attrs:{"href":"https://github.com/bluein-green"}},[_v("Jin Minjia")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#jin-minjia","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_v("Role")]),_v(": Contributor [2019 May - 2019 Aug]"),_c('br')]),_v(" "),_c('h3',{attrs:{"id":"james-pang-mun-wai"}},[_c('a',{attrs:{"href":"https://github.com/jamessspanggg"}},[_v("James Pang Mun Wai")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#james-pang-mun-wai","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('a',{attrs:{"href":"https://avatars1.githubusercontent.com/u/32864116?s=150&v=4","target":"_self"}},[_c('img',{staticClass:"img-fluid",attrs:{"src":"https://avatars1.githubusercontent.com/u/32864116?s=150&v=4","alt":""}})]),_c('br'),_v(" "),_c('strong',[_v("Role")]),_v(": Committer [2020 May - 2021 Jan]"),_c('br'),_v("\nContributor [2019 May - 2020 May]"),_c('br')]),_v(" "),_c('h3',{attrs:{"id":"lee-jin-yao"}},[_c('a',{attrs:{"href":"https://github.com/jinyao-lee"}},[_v("Lee Jin Yao")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#lee-jin-yao","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('a',{attrs:{"href":"https://avatars3.githubusercontent.com/u/35756209?s=150&v=4","target":"_self"}},[_c('img',{staticClass:"img-fluid",attrs:{"src":"https://avatars3.githubusercontent.com/u/35756209?s=150&v=4","alt":""}})]),_c('br'),_v(" "),_c('strong',[_v("Role")]),_v(": Contributor [2019 May - 2020 May]"),_c('br')]),_v(" "),_c('h3',{attrs:{"id":"chong-chee-yuan"}},[_c('a',{attrs:{"href":"https://github.com/ccyccyccy"}},[_v("Chong Chee Yuan")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#chong-chee-yuan","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_v("Role")]),_v(": Contributor [2020 January - 2020 May]"),_c('br')]),_v(" "),_c('h3',{attrs:{"id":"ni-tianzhen"}},[_c('a',{attrs:{"href":"https://github.com/niqiukun"}},[_v("Ni Tianzhen")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#ni-tianzhen","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_v("Role")]),_v(": Contributor [2020 January - 2020 May]"),_c('br')]),_v(" "),_c('h3',{attrs:{"id":"yash-chowdhary"}},[_c('a',{attrs:{"href":"https://github.com/yash-chowdhary"}},[_v("Yash Chowdhary")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#yash-chowdhary","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('a',{attrs:{"href":"https://avatars2.githubusercontent.com/u/21968718?s=150&v=4","target":"_self"}},[_c('img',{staticClass:"img-fluid",attrs:{"src":"https://avatars2.githubusercontent.com/u/21968718?s=150&v=4","alt":""}})]),_c('br'),_v(" "),_c('strong',[_v("Role")]),_v(": Contributor [2020 January - 2020 May]"),_c('br')]),_v(" "),_c('h3',{attrs:{"id":"liu-yiwen"}},[_c('a',{attrs:{"href":"https://github.com/0blivious"}},[_v("Liu Yiwen")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#liu-yiwen","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_v("Role")]),_v(": Contributor [2019 August - 2021 May]"),_c('br')]),_v(" "),_c('h3',{attrs:{"id":"tejas-bhuwania"}},[_c('a',{attrs:{"href":"https://github.com/Tejas2805"}},[_v("Tejas Bhuwania")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#tejas-bhuwania","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('a',{attrs:{"href":"https://avatars2.githubusercontent.com/u/35946746?s=150&v=4","target":"_self"}},[_c('img',{staticClass:"img-fluid",attrs:{"src":"https://avatars2.githubusercontent.com/u/35946746?s=150&v=4","alt":""}})]),_c('br'),_v(" "),_c('strong',[_v("Role")]),_v(": Contributor [2019 August - 2021 August]"),_c('br')]),_v(" "),_c('h3',{attrs:{"id":"anubhav"}},[_c('a',{attrs:{"href":"https://github.com/anubh-v"}},[_v("Anubhav")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#anubhav","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_v("Role")]),_v(": Contributor [2019 September - 2020 August]"),_c('br')]),_v(" "),_c('h3',{attrs:{"id":"ang-ze-yu"}},[_c('a',{attrs:{"href":"https://github.com/ang-zeyu"}},[_v("Ang Ze Yu")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#ang-ze-yu","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_v("Role")]),_v(": Contributor [2020 January - 2021 May]"),_c('br')]),_v(" "),_c('h3',{attrs:{"id":"roland-yu-wenyang"}},[_c('a',{attrs:{"href":"https://github.com/rolandyuwy"}},[_v("Roland Yu Wenyang")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#roland-yu-wenyang","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_v("Role")]),_v(": Contributor [2021 January - 2021 March]"),_c('br')])])])} },function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('small',[_v("["),_c('span',[_c('strong',[_v("Powered by")])]),_v(" "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"30"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.2")]),_v(", generated on Tue, 14 May 2024, 13:12:51 UTC]")])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('small',[_v("["),_c('span',[_c('strong',[_v("Powered by")])]),_v(" "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"30"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.2")]),_v(", generated on Thu, 16 May 2024, 22:31:25 UTC]")])])])} }]; \ No newline at end of file diff --git a/contact.html b/contact.html index 34d11998f1..cf5c1a3421 100644 --- a/contact.html +++ b/contact.html @@ -14,7 +14,7 @@

Contact us

You can post your questions, suggestions, and bug reports in our issue tracker.

Alternatively, you can email us at seer@comp.nus.edu.sg

+

Contact us

You can post your questions, suggestions, and bug reports in our issue tracker.

Alternatively, you can email us at seer@comp.nus.edu.sg

diff --git a/contact.page-vue-render.js b/contact.page-vue-render.js index f9361bc8f9..adc2135550 100644 --- a/contact.page-vue-render.js +++ b/contact.page-vue-render.js @@ -8,6 +8,6 @@ with(this){return _c('div',{attrs:{"id":"app"}},[_c('navbar',{attrs:{"type":"dar with(this){return _c('div',{attrs:{"id":"flex-body"}},[_c('div',{staticClass:"fixed-header-padding",attrs:{"id":"content-wrapper"}},[_c('h1',{staticClass:"display-3",attrs:{"id":"contact-us"}},[_c('span',[_v("Contact us")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#contact-us","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('span',{staticClass:"fas fa-comment-alt",attrs:{"aria-hidden":"true"}}),_v(" You can post your questions, suggestions, and bug reports in our "),_c('a',{attrs:{"href":"https://github.com/RepoSense/reposense/issues"}},[_v("issue tracker")]),_v(".")]),_v(" "),_c('p',[_c('span',{staticClass:"fas fa-envelope",attrs:{"aria-hidden":"true"}}),_v(" Alternatively, you can email us at "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("seer@comp.nus.edu.sg")])])])])} },function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('small',[_v("["),_c('span',[_c('strong',[_v("Powered by")])]),_v(" "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"30"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.2")]),_v(", generated on Tue, 14 May 2024, 13:12:51 UTC]")])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('small',[_v("["),_c('span',[_c('strong',[_v("Powered by")])]),_v(" "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"30"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.2")]),_v(", generated on Thu, 16 May 2024, 22:31:25 UTC]")])])])} }]; \ No newline at end of file diff --git a/dg/architecture.html b/dg/architecture.html index 9862125d35..e7ea3cb2bb 100644 --- a/dg/architecture.html +++ b/dg/architecture.html @@ -11,7 +11,7 @@ - +

Architecture

architecture Figure 1. Overall architecture of RepoSense

Parser(ConfigParser)

Parser contains three components:

  • ArgsParser: Parses the user-supplied command line arguments into a CliArguments object. RunConfigurationDecider then gets the appropriate RunConfiguration for the CliArguments which generates the appropriate Config files.
  • CsvParser: Abstract generic class for CSV parsing functionality. The following three classes extend CsvParser. @@ -20,7 +20,7 @@
    • By default, 4 threads are used for cloning; the number of threads can be specified using the CLI argument --cloning-threads <threads>.
  • analyzes the repositories using the CommitReporter and AuthorshipReporter in a multi-threaded fashion.
    • First, copies the template files into the designated output directory.
    • Then, uses CommitReporter and AuthorshipReporter to produce the commit and authorship summary, respectively.
    • By default, the number of threads used for analysis is equal to the number of CPU cores available; the number of threads can be specified using the CLI argument --analysis-threads <threads>.
  • generates the JSON files needed to generate the HTML report.
  • System

    System contains the classes that interact with the Operating System and external processes.

    • CommandRunner creates processes that execute commands on the terminal. It consists of many git commands.
    • LogsManager uses the java.util.logging package for logging. The LogsManager class is used to manage the logging levels and logging destinations. Log messages are output through: Console and to a .log file.
    • ReportServer starts a server to display the report on the browser. It depends on the net.freeutils.httpserver package.

    Model

    Model holds the data structures that are commonly used by the different aspects of RepoSense.

    • Author stores the Git ID of an author. Any contributions or commits made by the author, using his/her Git ID or aliases, will be attributed to the same Author object. AuthorshipReporter and CommitsReporter use it to attribute the commit and file contributions to the respective authors.
    • CliArguments stores the parsed command-line arguments supplied by the user. It contains the configuration settings such as the CSV config file to read from, the directory to output the report to, and the date range of commits to analyze. These configuration settings are passed into RepoConfiguration.
    • FileTypeManager stores the file format to be analyzed and the custom groups specified by the user for any repository.
    • RepoConfiguration stores the configuration information from the CSV config file for a single repository: the repository's organization, name, branch, list of authors to analyze, date range to analyze commits, and files from CliArguments. This configuration information is used by: -
      • GitClone to determine the location to clone the repository from and which branch to check out to.
      • AuthorshipReporter and CommitsReporter to determine the range of commits and files to analyze.
      • ReportGenerator to determine the directory to output the report.
+ diff --git a/dg/architecture.page-vue-render.js b/dg/architecture.page-vue-render.js index c74e31e890..2037807421 100644 --- a/dg/architecture.page-vue-render.js +++ b/dg/architecture.page-vue-render.js @@ -1,7 +1,7 @@ var pageVueRenderFn = function anonymous( ) { -with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"fixed":""}},[_c('navbar',{attrs:{"type":"dark"},scopedSlots:_u([{key:"brand",fn:function(){return [_c('a',{staticClass:"navbar-brand",attrs:{"href":"/index.html","title":"Home"}},[_c('img',{attrs:{"width":"30px","src":"/favicon.ico"}})])]},proxy:true},{key:"right",fn:function(){return [_c('li',[_c('form',{staticClass:"navbar-form"},[_c('searchbar',{attrs:{"data":searchData,"placeholder":"Search","on-hit":searchCallback,"menu-align-right":""}})],1)])]},proxy:true}])},[_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/index.html"}},[_v("HOME")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/showcase.html"}},[_v("SHOWCASE")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/ug/index.html"}},[_v("USER GUIDE")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/dg/index.html"}},[_v("DEVELOPER GUIDE")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/about.html"}},[_v("ABOUT")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/contact.html"}},[_v("CONTACT")])]),_v(" "),_c('li',{attrs:{"tags":"dev"}},[_c('a',{staticClass:"nav-link",attrs:{"href":"https://reposense.org","target":"_blank"}},[_c('span',[_c('span',{staticClass:"fas fa-external-link-alt",attrs:{"aria-hidden":"true"}}),_v(" PRODUCTION SITE")])])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"https://github.com/RepoSense/reposense","target":"_blank"}},[_c('span',[_c('span',{staticClass:"fab fa-github",attrs:{"aria-hidden":"true"}})])])])])],1),_v(" "),_c('div',{attrs:{"id":"flex-body"}},[_c('overlay-source',{staticClass:"fixed-header-padding",attrs:{"id":"site-nav","tag-name":"nav","to":"site-nav"}},[_c('div',{staticClass:"site-nav-top"},[_c('div',{staticClass:"font-weight-bold mb-2",staticStyle:{"font-size":"1.25rem"}},[_c('span',[_c('strong',[_c('strong',[_v("DEVELOPER GUIDE")])])])])]),_v(" "),_c('div',{staticClass:"nav-component slim-scroll"},[_c('div',[_c('site-nav',[_c('overlay-source',{staticClass:"site-nav-list site-nav-list-root",attrs:{"tag-name":"ul","to":"mb-site-nav"}},[_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/index.html"}},[_c('strong',[_v("Contributing")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/settingUp.html"}},[_c('strong',[_v("Setting up")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/learningBasics.html"}},[_c('strong',[_v("Learning the basics")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/workflow.html"}},[_c('strong',[_v("Workflow")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('strong',[_v("Design and implementation")]),_v(" "),_c('div',{staticClass:"site-nav-dropdown-btn-container"},[_c('i',{staticClass:"site-nav-dropdown-btn-icon site-nav-rotate-icon",attrs:{"onclick":"handleSiteNavClick(this.parentNode.parentNode, false); event.stopPropagation();"}},[_c('span',{staticClass:"glyphicon glyphicon-menu-down",attrs:{"aria-hidden":"true"}})])])]),_c('ul',{staticClass:"site-nav-dropdown-container site-nav-dropdown-container-open site-nav-list"},[_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/architecture.html"}},[_v("Architecture")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/report.html"}},[_v("HTML report")])])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/projectManagement.html"}},[_c('strong',[_v("Project management")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/devOpsGuide.html"}},[_c('strong',[_v("DevOps guide")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('strong',[_v("Appendices")]),_v(" "),_c('div',{staticClass:"site-nav-dropdown-btn-container"},[_c('i',{staticClass:"site-nav-dropdown-btn-icon site-nav-rotate-icon",attrs:{"onclick":"handleSiteNavClick(this.parentNode.parentNode, false); event.stopPropagation();"}},[_c('span',{staticClass:"glyphicon glyphicon-menu-down",attrs:{"aria-hidden":"true"}})])])]),_c('ul',{staticClass:"site-nav-dropdown-container site-nav-dropdown-container-open site-nav-list"},[_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/cli.html"}},[_v("CLI syntax reference")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/styleGuides.html"}},[_v("Style guides")])])])])])])],1)],1)])]),_v(" "),_c('div',{staticClass:"fixed-header-padding",attrs:{"id":"content-wrapper"}},[_m(0),_v(" "),_m(1),_v(" "),_m(2),_v(" "),_m(3),_v(" "),_m(4),_v(" "),_m(5),_v(" "),_m(6),_v(" "),_m(7),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Note that when constructing new commands containing path arguments, use the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("StringsUtil::addQuotesForFilePath")]),_v(" method to safely convert a Java string into an equivalent Bash/CMD argument.")])]),_v(" "),_m(8),_v(" "),_m(9),_v(" "),_m(10),_v(" "),_m(11),_v(" "),_m(12),_v(" "),_m(13),_v(" "),_m(14),_v(" "),_m(15),_v(" "),_m(16),_v(" "),_m(17),_v(" "),_m(18),_v(" "),_m(19),_v(" "),_m(20),_v(" "),_m(21),_v(" "),_m(22)],1)],1),_v(" "),_m(23)])} +with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"fixed":""}},[_c('navbar',{attrs:{"type":"dark"},scopedSlots:_u([{key:"brand",fn:function(){return [_c('a',{staticClass:"navbar-brand",attrs:{"href":"/index.html","title":"Home"}},[_c('img',{attrs:{"width":"30px","src":"/favicon.ico"}})])]},proxy:true},{key:"right",fn:function(){return [_c('li',[_c('form',{staticClass:"navbar-form"},[_c('searchbar',{attrs:{"data":searchData,"placeholder":"Search","on-hit":searchCallback,"menu-align-right":""}})],1)])]},proxy:true}])},[_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/index.html"}},[_v("HOME")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/showcase.html"}},[_v("SHOWCASE")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/ug/index.html"}},[_v("USER GUIDE")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/dg/index.html"}},[_v("DEVELOPER GUIDE")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/about.html"}},[_v("ABOUT")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/contact.html"}},[_v("CONTACT")])]),_v(" "),_c('li',{attrs:{"tags":"dev"}},[_c('a',{staticClass:"nav-link",attrs:{"href":"https://reposense.org","target":"_blank"}},[_c('span',[_c('span',{staticClass:"fas fa-external-link-alt",attrs:{"aria-hidden":"true"}}),_v(" PRODUCTION SITE")])])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"https://github.com/RepoSense/reposense","target":"_blank"}},[_c('span',[_c('span',{staticClass:"fab fa-github",attrs:{"aria-hidden":"true"}})])])])])],1),_v(" "),_c('div',{attrs:{"id":"flex-body"}},[_c('overlay-source',{staticClass:"fixed-header-padding",attrs:{"id":"site-nav","tag-name":"nav","to":"site-nav"}},[_c('div',{staticClass:"site-nav-top"},[_c('div',{staticClass:"font-weight-bold mb-2",staticStyle:{"font-size":"1.25rem"}},[_c('span',[_c('strong',[_c('strong',[_v("DEVELOPER GUIDE")])])])])]),_v(" "),_c('div',{staticClass:"nav-component slim-scroll"},[_c('div',[_c('site-nav',[_c('overlay-source',{staticClass:"site-nav-list site-nav-list-root",attrs:{"tag-name":"ul","to":"mb-site-nav"}},[_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/index.html"}},[_c('strong',[_v("Contributing")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/settingUp.html"}},[_c('strong',[_v("Setting up")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/learningBasics.html"}},[_c('strong',[_v("Learning the basics")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/workflow.html"}},[_c('strong',[_v("Workflow")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('strong',[_v("Design and implementation")]),_v(" "),_c('div',{staticClass:"site-nav-dropdown-btn-container"},[_c('i',{staticClass:"site-nav-dropdown-btn-icon site-nav-rotate-icon",attrs:{"onclick":"handleSiteNavClick(this.parentNode.parentNode, false); event.stopPropagation();"}},[_c('span',{staticClass:"glyphicon glyphicon-menu-down",attrs:{"aria-hidden":"true"}})])])]),_c('ul',{staticClass:"site-nav-dropdown-container site-nav-dropdown-container-open site-nav-list"},[_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/architecture.html"}},[_v("Architecture")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/report.html"}},[_v("HTML report")])])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/projectManagement.html"}},[_c('strong',[_v("Project management")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/devOpsGuide.html"}},[_c('strong',[_v("DevOps guide")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('strong',[_v("Appendices")]),_v(" "),_c('div',{staticClass:"site-nav-dropdown-btn-container"},[_c('i',{staticClass:"site-nav-dropdown-btn-icon site-nav-rotate-icon",attrs:{"onclick":"handleSiteNavClick(this.parentNode.parentNode, false); event.stopPropagation();"}},[_c('span',{staticClass:"glyphicon glyphicon-menu-down",attrs:{"aria-hidden":"true"}})])])]),_c('ul',{staticClass:"site-nav-dropdown-container site-nav-dropdown-container-open site-nav-list"},[_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/cli.html"}},[_v("CLI syntax reference")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/styleGuides.html"}},[_v("Style guides")])])])])])])],1)],1)])]),_v(" "),_c('div',{staticClass:"fixed-header-padding",attrs:{"id":"content-wrapper"}},[_m(0),_v(" "),_m(1),_v(" "),_m(2),_v(" "),_m(3),_v(" "),_m(4),_v(" "),_m(5),_v(" "),_m(6),_v(" "),_m(7),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Note that when constructing new commands containing path arguments, use the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("StringsUtil::addQuotesForFilePath")]),_v(" method to safely convert a Java string into an equivalent Bash/CMD argument.")])]),_v(" "),_m(8),_v(" "),_m(9),_v(" "),_m(10),_v(" "),_m(11),_v(" "),_m(12),_v(" "),_m(13),_v(" "),_m(14),_v(" "),_m(15),_v(" "),_m(16),_v(" "),_m(17),_v(" "),_m(18),_v(" "),_m(19),_v(" "),_m(20),_v(" "),_m(21),_v(" "),_m(22)],1),_v(" "),_c('overlay-source',{staticClass:"fixed-header-padding",attrs:{"id":"page-nav","tag-name":"nav","to":"page-nav"}},[_c('div',{staticClass:"nav-component slim-scroll"},[_c('overlay-source',{staticClass:"nav nav-pills flex-column my-0 small no-flex-wrap",attrs:{"id":"mb-page-nav","tag-name":"nav","to":"mb-page-nav"}},[_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#architecture"}},[_v("Architecture‎")]),_v(" "),_c('nav',{staticClass:"nav nav-pills flex-column my-0 nested no-flex-wrap"},[_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#parser-configparser"}},[_v("Parser(ConfigParser)‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#git"}},[_v("Git‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#commitsreporter"}},[_v("CommitsReporter‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#authorshipreporter"}},[_v("AuthorshipReporter‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#reportgenerator-main"}},[_v("ReportGenerator(Main)‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#system"}},[_v("System‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#model"}},[_v("Model‎")])])])],1)])],1),_v(" "),_m(23)])} }; var pageVueStaticRenderFns = [function anonymous( ) { @@ -74,6 +74,6 @@ with(this){return _c('p',[_c('a',{attrs:{"href":"https://github.com/reposense/Re with(this){return _c('ul',[_c('li',[_c('a',{attrs:{"href":"https://github.com/reposense/RepoSense/blob/master/src/main/java/reposense/model/Author.java"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Author")])]),_v(" stores the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Git ID")]),_v(" of an author. Any contributions or commits made by the author, using his/her "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Git ID")]),_v(" or aliases, will be attributed to the same "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Author")]),_v(" object. "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("AuthorshipReporter")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("CommitsReporter")]),_v(" use it to attribute the commit and file contributions to the respective authors.")]),_v(" "),_c('li',[_c('a',{attrs:{"href":"https://github.com/reposense/RepoSense/blob/master/src/main/java/reposense/model/CliArguments.java"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("CliArguments")])]),_v(" stores the parsed command-line arguments supplied by the user. It contains the configuration settings such as the CSV config file to read from, the directory to output the report to, and the date range of commits to analyze. These configuration settings are passed into "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("RepoConfiguration")]),_v(".")]),_v(" "),_c('li',[_c('a',{attrs:{"href":"https://github.com/reposense/RepoSense/blob/master/src/main/java/reposense/model/FileTypeManager.java"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("FileTypeManager")])]),_v(" stores the file format to be analyzed and the custom groups specified by the user for any repository.")]),_v(" "),_c('li',[_c('a',{attrs:{"href":"https://github.com/reposense/RepoSense/blob/master/src/main/java/reposense/model/RepoConfiguration.java"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("RepoConfiguration")])]),_v(" stores the configuration information from the CSV config file for a single repository: the repository's organization, name, branch, list of authors to analyze, date range to analyze commits, and files from "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("CliArguments")]),_v(".\nThis configuration information is used by:\n"),_c('ul',[_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("GitClone")]),_v(" to determine the location to clone the repository from and which branch to check out to.")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("AuthorshipReporter")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("CommitsReporter")]),_v(" to determine the range of commits and files to analyze.")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ReportGenerator")]),_v(" to determine the directory to output the report.")])])])])} },function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('small',[_v("["),_c('span',[_c('strong',[_v("Powered by")])]),_v(" "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"30"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.2")]),_v(", generated on Tue, 14 May 2024, 13:12:51 UTC]")])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('small',[_v("["),_c('span',[_c('strong',[_v("Powered by")])]),_v(" "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"30"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.2")]),_v(", generated on Thu, 16 May 2024, 22:31:25 UTC]")])])])} }]; \ No newline at end of file diff --git a/dg/cli.html b/dg/cli.html index 7c672a758e..e627721608 100644 --- a/dg/cli.html +++ b/dg/cli.html @@ -11,7 +11,7 @@ - +

Appendix: CLI syntax reference

The section below provides explanations for flags used in system testing. For other flags, please visit the CLI @@ -19,7 +19,7 @@

  • E.g. --fresh-cloning. Fresh cloning is always false when running RepoSense normally, and is only used in system tests.

--fresh-cloning

--fresh-cloning: Clones the repo again if it has been cloned before.

  • Used in ConfigSystemTest.
  • Some test cases performs shallow cloning while some does not. Fresh cloning ensures that the test cases that does not perform shallow cloning will clone the repo again if the previous test case uses shallow cloning, ensuring -correctness of the analysis.
  • Requires --test-mode flag to be enabled.
+correctness of the analysis.
  • Requires --test-mode flag to be enabled.
  • diff --git a/dg/cli.page-vue-render.js b/dg/cli.page-vue-render.js index 471cbcc74f..40ddb869ff 100644 --- a/dg/cli.page-vue-render.js +++ b/dg/cli.page-vue-render.js @@ -1,7 +1,7 @@ var pageVueRenderFn = function anonymous( ) { -with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"fixed":""}},[_c('navbar',{attrs:{"type":"dark"},scopedSlots:_u([{key:"brand",fn:function(){return [_c('a',{staticClass:"navbar-brand",attrs:{"href":"/index.html","title":"Home"}},[_c('img',{attrs:{"width":"30px","src":"/favicon.ico"}})])]},proxy:true},{key:"right",fn:function(){return [_c('li',[_c('form',{staticClass:"navbar-form"},[_c('searchbar',{attrs:{"data":searchData,"placeholder":"Search","on-hit":searchCallback,"menu-align-right":""}})],1)])]},proxy:true}])},[_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/index.html"}},[_v("HOME")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/showcase.html"}},[_v("SHOWCASE")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/ug/index.html"}},[_v("USER GUIDE")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/dg/index.html"}},[_v("DEVELOPER GUIDE")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/about.html"}},[_v("ABOUT")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/contact.html"}},[_v("CONTACT")])]),_v(" "),_c('li',{attrs:{"tags":"dev"}},[_c('a',{staticClass:"nav-link",attrs:{"href":"https://reposense.org","target":"_blank"}},[_c('span',[_c('span',{staticClass:"fas fa-external-link-alt",attrs:{"aria-hidden":"true"}}),_v(" PRODUCTION SITE")])])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"https://github.com/RepoSense/reposense","target":"_blank"}},[_c('span',[_c('span',{staticClass:"fab fa-github",attrs:{"aria-hidden":"true"}})])])])])],1),_v(" "),_c('div',{attrs:{"id":"flex-body"}},[_c('overlay-source',{staticClass:"fixed-header-padding",attrs:{"id":"site-nav","tag-name":"nav","to":"site-nav"}},[_c('div',{staticClass:"site-nav-top"},[_c('div',{staticClass:"font-weight-bold mb-2",staticStyle:{"font-size":"1.25rem"}},[_c('span',[_c('strong',[_c('strong',[_v("DEVELOPER GUIDE")])])])])]),_v(" "),_c('div',{staticClass:"nav-component slim-scroll"},[_c('div',[_c('site-nav',[_c('overlay-source',{staticClass:"site-nav-list site-nav-list-root",attrs:{"tag-name":"ul","to":"mb-site-nav"}},[_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/index.html"}},[_c('strong',[_v("Contributing")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/settingUp.html"}},[_c('strong',[_v("Setting up")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/learningBasics.html"}},[_c('strong',[_v("Learning the basics")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/workflow.html"}},[_c('strong',[_v("Workflow")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('strong',[_v("Design and implementation")]),_v(" "),_c('div',{staticClass:"site-nav-dropdown-btn-container"},[_c('i',{staticClass:"site-nav-dropdown-btn-icon site-nav-rotate-icon",attrs:{"onclick":"handleSiteNavClick(this.parentNode.parentNode, false); event.stopPropagation();"}},[_c('span',{staticClass:"glyphicon glyphicon-menu-down",attrs:{"aria-hidden":"true"}})])])]),_c('ul',{staticClass:"site-nav-dropdown-container site-nav-dropdown-container-open site-nav-list"},[_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/architecture.html"}},[_v("Architecture")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/report.html"}},[_v("HTML report")])])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/projectManagement.html"}},[_c('strong',[_v("Project management")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/devOpsGuide.html"}},[_c('strong',[_v("DevOps guide")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('strong',[_v("Appendices")]),_v(" "),_c('div',{staticClass:"site-nav-dropdown-btn-container"},[_c('i',{staticClass:"site-nav-dropdown-btn-icon site-nav-rotate-icon",attrs:{"onclick":"handleSiteNavClick(this.parentNode.parentNode, false); event.stopPropagation();"}},[_c('span',{staticClass:"glyphicon glyphicon-menu-down",attrs:{"aria-hidden":"true"}})])])]),_c('ul',{staticClass:"site-nav-dropdown-container site-nav-dropdown-container-open site-nav-list"},[_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/cli.html"}},[_v("CLI syntax reference")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/styleGuides.html"}},[_v("Style guides")])])])])])])],1)],1)])]),_v(" "),_c('div',{staticClass:"fixed-header-padding",attrs:{"id":"content-wrapper"}},[_m(0),_v(" "),_c('p',[_v("The section below provides explanations for flags used in system testing. For other flags, please visit the CLI\nsyntax reference under Appendix section of User Guide.")]),_v(" "),_m(1),_v(" "),_m(2),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("Used in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ConfigSystemTest")]),_v(".")]),_v(" "),_c('li',[_v("Can be used for behaviors specific to test code.\n"),_c('ul',[_c('li',[_v("E.g. "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--fresh-cloning")]),_v(". Fresh cloning is always "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("false")]),_v(" when running RepoSense normally, and is only used in\nsystem tests.")])])])])]),_v(" "),_m(3),_v(" "),_m(4),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("Used in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ConfigSystemTest")]),_v(".")]),_v(" "),_c('li',[_v("Some test cases performs shallow cloning while some does not. Fresh cloning ensures that the test cases that does\nnot perform shallow cloning will clone the repo again if the previous test case uses shallow cloning, ensuring\ncorrectness of the analysis.")]),_v(" "),_c('li',[_v("Requires "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--test-mode")]),_v(" flag to be enabled.")])])])],1)],1),_v(" "),_m(5)])} +with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"fixed":""}},[_c('navbar',{attrs:{"type":"dark"},scopedSlots:_u([{key:"brand",fn:function(){return [_c('a',{staticClass:"navbar-brand",attrs:{"href":"/index.html","title":"Home"}},[_c('img',{attrs:{"width":"30px","src":"/favicon.ico"}})])]},proxy:true},{key:"right",fn:function(){return [_c('li',[_c('form',{staticClass:"navbar-form"},[_c('searchbar',{attrs:{"data":searchData,"placeholder":"Search","on-hit":searchCallback,"menu-align-right":""}})],1)])]},proxy:true}])},[_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/index.html"}},[_v("HOME")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/showcase.html"}},[_v("SHOWCASE")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/ug/index.html"}},[_v("USER GUIDE")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/dg/index.html"}},[_v("DEVELOPER GUIDE")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/about.html"}},[_v("ABOUT")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/contact.html"}},[_v("CONTACT")])]),_v(" "),_c('li',{attrs:{"tags":"dev"}},[_c('a',{staticClass:"nav-link",attrs:{"href":"https://reposense.org","target":"_blank"}},[_c('span',[_c('span',{staticClass:"fas fa-external-link-alt",attrs:{"aria-hidden":"true"}}),_v(" PRODUCTION SITE")])])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"https://github.com/RepoSense/reposense","target":"_blank"}},[_c('span',[_c('span',{staticClass:"fab fa-github",attrs:{"aria-hidden":"true"}})])])])])],1),_v(" "),_c('div',{attrs:{"id":"flex-body"}},[_c('overlay-source',{staticClass:"fixed-header-padding",attrs:{"id":"site-nav","tag-name":"nav","to":"site-nav"}},[_c('div',{staticClass:"site-nav-top"},[_c('div',{staticClass:"font-weight-bold mb-2",staticStyle:{"font-size":"1.25rem"}},[_c('span',[_c('strong',[_c('strong',[_v("DEVELOPER GUIDE")])])])])]),_v(" "),_c('div',{staticClass:"nav-component slim-scroll"},[_c('div',[_c('site-nav',[_c('overlay-source',{staticClass:"site-nav-list site-nav-list-root",attrs:{"tag-name":"ul","to":"mb-site-nav"}},[_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/index.html"}},[_c('strong',[_v("Contributing")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/settingUp.html"}},[_c('strong',[_v("Setting up")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/learningBasics.html"}},[_c('strong',[_v("Learning the basics")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/workflow.html"}},[_c('strong',[_v("Workflow")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('strong',[_v("Design and implementation")]),_v(" "),_c('div',{staticClass:"site-nav-dropdown-btn-container"},[_c('i',{staticClass:"site-nav-dropdown-btn-icon site-nav-rotate-icon",attrs:{"onclick":"handleSiteNavClick(this.parentNode.parentNode, false); event.stopPropagation();"}},[_c('span',{staticClass:"glyphicon glyphicon-menu-down",attrs:{"aria-hidden":"true"}})])])]),_c('ul',{staticClass:"site-nav-dropdown-container site-nav-dropdown-container-open site-nav-list"},[_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/architecture.html"}},[_v("Architecture")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/report.html"}},[_v("HTML report")])])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/projectManagement.html"}},[_c('strong',[_v("Project management")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/devOpsGuide.html"}},[_c('strong',[_v("DevOps guide")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('strong',[_v("Appendices")]),_v(" "),_c('div',{staticClass:"site-nav-dropdown-btn-container"},[_c('i',{staticClass:"site-nav-dropdown-btn-icon site-nav-rotate-icon",attrs:{"onclick":"handleSiteNavClick(this.parentNode.parentNode, false); event.stopPropagation();"}},[_c('span',{staticClass:"glyphicon glyphicon-menu-down",attrs:{"aria-hidden":"true"}})])])]),_c('ul',{staticClass:"site-nav-dropdown-container site-nav-dropdown-container-open site-nav-list"},[_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/cli.html"}},[_v("CLI syntax reference")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/styleGuides.html"}},[_v("Style guides")])])])])])])],1)],1)])]),_v(" "),_c('div',{staticClass:"fixed-header-padding",attrs:{"id":"content-wrapper"}},[_m(0),_v(" "),_c('p',[_v("The section below provides explanations for flags used in system testing. For other flags, please visit the CLI\nsyntax reference under Appendix section of User Guide.")]),_v(" "),_m(1),_v(" "),_m(2),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("Used in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ConfigSystemTest")]),_v(".")]),_v(" "),_c('li',[_v("Can be used for behaviors specific to test code.\n"),_c('ul',[_c('li',[_v("E.g. "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--fresh-cloning")]),_v(". Fresh cloning is always "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("false")]),_v(" when running RepoSense normally, and is only used in\nsystem tests.")])])])])]),_v(" "),_m(3),_v(" "),_m(4),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("Used in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ConfigSystemTest")]),_v(".")]),_v(" "),_c('li',[_v("Some test cases performs shallow cloning while some does not. Fresh cloning ensures that the test cases that does\nnot perform shallow cloning will clone the repo again if the previous test case uses shallow cloning, ensuring\ncorrectness of the analysis.")]),_v(" "),_c('li',[_v("Requires "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--test-mode")]),_v(" flag to be enabled.")])])])],1),_v(" "),_c('overlay-source',{staticClass:"fixed-header-padding",attrs:{"id":"page-nav","tag-name":"nav","to":"page-nav"}},[_c('div',{staticClass:"nav-component slim-scroll"},[_c('overlay-source',{staticClass:"nav nav-pills flex-column my-0 small no-flex-wrap",attrs:{"id":"mb-page-nav","tag-name":"nav","to":"mb-page-nav"}},[_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#appendix-cli-syntax-reference"}},[_v("Appendix: CLI syntax reference‎")]),_v(" "),_c('nav',{staticClass:"nav nav-pills flex-column my-0 nested no-flex-wrap"},[_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#test-mode"}},[_v("--test-mode‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#fresh-cloning"}},[_v("--fresh-cloning‎")])])])],1)])],1),_v(" "),_m(5)])} }; var pageVueStaticRenderFns = [function anonymous( ) { @@ -20,6 +20,6 @@ with(this){return _c('h3',{attrs:{"id":"fresh-cloning"}},[_c('code',{pre:true,at with(this){return _c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--fresh-cloning")])]),_v(": Clones the repo again if it has been cloned before.")])} },function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('small',[_v("["),_c('span',[_c('strong',[_v("Powered by")])]),_v(" "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"30"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.2")]),_v(", generated on Tue, 14 May 2024, 13:12:51 UTC]")])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('small',[_v("["),_c('span',[_c('strong',[_v("Powered by")])]),_v(" "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"30"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.2")]),_v(", generated on Thu, 16 May 2024, 22:31:25 UTC]")])])])} }]; \ No newline at end of file diff --git a/dg/devOpsGuide.html b/dg/devOpsGuide.html index b0debc17fd..38f2d13842 100644 --- a/dg/devOpsGuide.html +++ b/dg/devOpsGuide.html @@ -11,10 +11,10 @@ - +

    DevOps Guide

    This page documents the various components that form part of the DevOps infrastructure that RepoSense uses.

    GitHub Actions

    GitHub Actions is a platform that is used by RepoSense for running the test suite and is primarily used for continuous integration and testing. The test suite is stored in .github/workflows/ and comprises of:

    • Unit tests (in src/tests/)
    • System tests (in src/systemtest/)
    • Frontend tests (in frontend/cypress/tests/)

    Continuous integration

    All three types of tests in the test suite are run in a single GitHub Actions workflow called "Continuous Integration". The steps are defined in integration.yml and are split into two types of jobs:

    1. Ubuntu/macOS/Windows JDK 11 (mainbuild): Runs both unit tests and system tests on JDK 11 running on supported Ubuntu, macOS and Windows versions. For Ubuntu, this job also produces a RepoSense report and the MarkBind documentation website for previewing.
    2. Cypress frontend tests (cypress): Runs only the frontend tests on JDK 11 running on Ubuntu.

    The list of supported OS versions are available on the GitHub Docs website. These jobs should be updated regularly whenever RepoSense supports newer versions of the Java Development Kit (JDK) as well as when new OS versions are made available (via the job OS matrix). Frontend tests are run separately to take advantage of parallel job execution.

    Some of the jobs execute some commands that are too complicated to be included in the workflow configuration files. Such commands are written in the form of a bash script and are located in the config/gh-actions folder.

    This workflow is run for both incoming pull requests to any branch as well as direct commits to any branch in the repository.

    Cypress frontend tests are run against reports generated from config files in frontend/cypress/config. It uses the cypress branch of the RepoSense repository which is kept independent of master and should be updated only when there are new frontend tests that need to be accommodated.

    Report and documentation previews

    For each pull request to any branch in the repository, a RepoSense report and the MarkBind documentation website is generated based on the code submitted in the pull request. This is to facilitate pull request reviewers in being able to quickly preview how the RepoSense report and/or the documentation website will change after the pull request is merged.

    Due to security considerations in preventing pwn requests, the deployment of the report and documentation previews were split across two workflows in pull request #1411:

    1. Surge.sh pending build (defined in pending.yml): Used for gathering information about the pull request and update the pull request checklist to indicate that the previews are pending.
    2. Surge.sh build preview (defined in surge.yml): Used for actually deploying the RepoSense report and documentation website to Surge.sh and updating the pull request checklist to link to the preview websites.

    The previews are recognised as GitHub deployments and are named dashboard-$PRNUMBER and docs-$PRNUMBER, where $PRNUMBER is the pull request number. Once a preview is ready, the reviewer would be able to click on "View deployment" or "Show environments" in the pull request to open the preview websites.

    Both the "Surge.sh pending build" and "Continuous Integration" workflows produce an artifact respectively, which is then downloaded by the "Surge.sh build preview" workflow to be deployed to Surge.sh. Due to limitations in GitHub Actions in determining the workflow execution order, the "Surge.sh pending build" workflow is assumed to have been completed before the "Continuous Integration" workflow is completed.

    This task is not performed on commits to the repository, as there is no need to do so.

    After the pull request is closed or merged, the Surge.sh deployments are retained, while the GitHub environments for them are cleared by another workflow "Clear deployments for closed pull requests" (defined in delete-deploy.yml). The workflow uses delete-deploy.sh (found in the config/gh-actions/ folder) to remove the environments on GitHub, and to leave a comment on the pull request with links to the Surge.sh previews for later reference.

    GitHub Pages

    This task builds the MarkBind documentation website on every push to the master branch. The steps are defined in gh-pages.yml.

    Stale pull requests

    This task automates the cleaning up of the pull requests by automatically marking inactive pull requests as stale and subsequently closing them. The steps and configurations are defined in stale.yml and the job is triggered automatically once per day.

    Codecov

    Codecov is a platform for checking the code coverage status of the project and the pull request patch. It runs automatically on each pull request and the settings are located in codecov.yml.

    Surge.sh

    Surge.sh is a platform for hosting the RepoSense report and documentation preview builds. The deployment is automatically performed by the "Surge.sh build preview" job using the deploy.sh script in the config/gh-actions/ folder.

    For authentication, two secrets are stored and used in GitHub Actions:

    1. SURGE_LOGIN - Holds the email address to use for the Surge.sh account
    2. SURGE_TOKEN - Holds the secret account token generated for the above account (generated using surge token)

    The surge command automatically detects the existence of these two environment variables and use them for authentication when deploying the RepoSense report and documentation build previews.

    Currently, deployments are kept forever, even after the pull request is merged or closed. There is currently no existing functionality to automatically clean up deployments after they are no longer useful.

    +

    DevOps Guide

    This page documents the various components that form part of the DevOps infrastructure that RepoSense uses.

    GitHub Actions

    GitHub Actions is a platform that is used by RepoSense for running the test suite and is primarily used for continuous integration and testing. The test suite is stored in .github/workflows/ and comprises of:

    Continuous integration

    All three types of tests in the test suite are run in a single GitHub Actions workflow called "Continuous Integration". The steps are defined in integration.yml and are split into two types of jobs:

    1. Ubuntu/macOS/Windows JDK 11 (mainbuild): Runs both unit tests and system tests on JDK 11 running on supported Ubuntu, macOS and Windows versions. For Ubuntu, this job also produces a RepoSense report and the MarkBind documentation website for previewing.
    2. Cypress frontend tests (cypress): Runs only the frontend tests on JDK 11 running on Ubuntu.

    The list of supported OS versions are available on the GitHub Docs website. These jobs should be updated regularly whenever RepoSense supports newer versions of the Java Development Kit (JDK) as well as when new OS versions are made available (via the job OS matrix). Frontend tests are run separately to take advantage of parallel job execution.

    Some of the jobs execute some commands that are too complicated to be included in the workflow configuration files. Such commands are written in the form of a bash script and are located in the config/gh-actions folder.

    This workflow is run for both incoming pull requests to any branch as well as direct commits to any branch in the repository.

    Cypress frontend tests are run against reports generated from config files in frontend/cypress/config. It uses the cypress branch of the RepoSense repository which is kept independent of master and should be updated only when there are new frontend tests that need to be accommodated.

    Report and documentation previews

    For each pull request to any branch in the repository, a RepoSense report and the MarkBind documentation website is generated based on the code submitted in the pull request. This is to facilitate pull request reviewers in being able to quickly preview how the RepoSense report and/or the documentation website will change after the pull request is merged.

    Due to security considerations in preventing pwn requests, the deployment of the report and documentation previews were split across two workflows in pull request #1411:

    1. Surge.sh pending build (defined in pending.yml): Used for gathering information about the pull request and update the pull request checklist to indicate that the previews are pending.
    2. Surge.sh build preview (defined in surge.yml): Used for actually deploying the RepoSense report and documentation website to Surge.sh and updating the pull request checklist to link to the preview websites.

    The previews are recognised as GitHub deployments and are named dashboard-$PRNUMBER and docs-$PRNUMBER, where $PRNUMBER is the pull request number. Once a preview is ready, the reviewer would be able to click on "View deployment" or "Show environments" in the pull request to open the preview websites.

    Both the "Surge.sh pending build" and "Continuous Integration" workflows produce an artifact respectively, which is then downloaded by the "Surge.sh build preview" workflow to be deployed to Surge.sh. Due to limitations in GitHub Actions in determining the workflow execution order, the "Surge.sh pending build" workflow is assumed to have been completed before the "Continuous Integration" workflow is completed.

    This task is not performed on commits to the repository, as there is no need to do so.

    After the pull request is closed or merged, the Surge.sh deployments are retained, while the GitHub environments for them are cleared by another workflow "Clear deployments for closed pull requests" (defined in delete-deploy.yml). The workflow uses delete-deploy.sh (found in the config/gh-actions/ folder) to remove the environments on GitHub, and to leave a comment on the pull request with links to the Surge.sh previews for later reference.

    GitHub Pages

    This task builds the MarkBind documentation website on every push to the master branch. The steps are defined in gh-pages.yml.

    Stale pull requests

    This task automates the cleaning up of the pull requests by automatically marking inactive pull requests as stale and subsequently closing them. The steps and configurations are defined in stale.yml and the job is triggered automatically once per day.

    Codecov

    Codecov is a platform for checking the code coverage status of the project and the pull request patch. It runs automatically on each pull request and the settings are located in codecov.yml.

    Surge.sh

    Surge.sh is a platform for hosting the RepoSense report and documentation preview builds. The deployment is automatically performed by the "Surge.sh build preview" job using the deploy.sh script in the config/gh-actions/ folder.

    For authentication, two secrets are stored and used in GitHub Actions:

    1. SURGE_LOGIN - Holds the email address to use for the Surge.sh account
    2. SURGE_TOKEN - Holds the secret account token generated for the above account (generated using surge token)

    The surge command automatically detects the existence of these two environment variables and use them for authentication when deploying the RepoSense report and documentation build previews.

    Currently, deployments are kept forever, even after the pull request is merged or closed. There is currently no existing functionality to automatically clean up deployments after they are no longer useful.

    diff --git a/dg/devOpsGuide.page-vue-render.js b/dg/devOpsGuide.page-vue-render.js index bc053fcd63..20395a7259 100644 --- a/dg/devOpsGuide.page-vue-render.js +++ b/dg/devOpsGuide.page-vue-render.js @@ -1,13 +1,13 @@ var pageVueRenderFn = function anonymous( ) { -with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"fixed":""}},[_c('navbar',{attrs:{"type":"dark"},scopedSlots:_u([{key:"brand",fn:function(){return [_c('a',{staticClass:"navbar-brand",attrs:{"href":"/index.html","title":"Home"}},[_c('img',{attrs:{"width":"30px","src":"/favicon.ico"}})])]},proxy:true},{key:"right",fn:function(){return [_c('li',[_c('form',{staticClass:"navbar-form"},[_c('searchbar',{attrs:{"data":searchData,"placeholder":"Search","on-hit":searchCallback,"menu-align-right":""}})],1)])]},proxy:true}])},[_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/index.html"}},[_v("HOME")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/showcase.html"}},[_v("SHOWCASE")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/ug/index.html"}},[_v("USER GUIDE")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/dg/index.html"}},[_v("DEVELOPER GUIDE")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/about.html"}},[_v("ABOUT")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/contact.html"}},[_v("CONTACT")])]),_v(" "),_c('li',{attrs:{"tags":"dev"}},[_c('a',{staticClass:"nav-link",attrs:{"href":"https://reposense.org","target":"_blank"}},[_c('span',[_c('span',{staticClass:"fas fa-external-link-alt",attrs:{"aria-hidden":"true"}}),_v(" PRODUCTION SITE")])])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"https://github.com/RepoSense/reposense","target":"_blank"}},[_c('span',[_c('span',{staticClass:"fab fa-github",attrs:{"aria-hidden":"true"}})])])])])],1),_v(" "),_c('div',{attrs:{"id":"flex-body"}},[_c('overlay-source',{staticClass:"fixed-header-padding",attrs:{"id":"site-nav","tag-name":"nav","to":"site-nav"}},[_c('div',{staticClass:"site-nav-top"},[_c('div',{staticClass:"font-weight-bold mb-2",staticStyle:{"font-size":"1.25rem"}},[_c('span',[_c('strong',[_c('strong',[_v("DEVELOPER GUIDE")])])])])]),_v(" "),_c('div',{staticClass:"nav-component slim-scroll"},[_c('div',[_c('site-nav',[_c('overlay-source',{staticClass:"site-nav-list site-nav-list-root",attrs:{"tag-name":"ul","to":"mb-site-nav"}},[_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/index.html"}},[_c('strong',[_v("Contributing")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/settingUp.html"}},[_c('strong',[_v("Setting up")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/learningBasics.html"}},[_c('strong',[_v("Learning the basics")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/workflow.html"}},[_c('strong',[_v("Workflow")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('strong',[_v("Design and implementation")]),_v(" "),_c('div',{staticClass:"site-nav-dropdown-btn-container"},[_c('i',{staticClass:"site-nav-dropdown-btn-icon site-nav-rotate-icon",attrs:{"onclick":"handleSiteNavClick(this.parentNode.parentNode, false); event.stopPropagation();"}},[_c('span',{staticClass:"glyphicon glyphicon-menu-down",attrs:{"aria-hidden":"true"}})])])]),_c('ul',{staticClass:"site-nav-dropdown-container site-nav-dropdown-container-open site-nav-list"},[_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/architecture.html"}},[_v("Architecture")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/report.html"}},[_v("HTML report")])])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/projectManagement.html"}},[_c('strong',[_v("Project management")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/devOpsGuide.html"}},[_c('strong',[_v("DevOps guide")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('strong',[_v("Appendices")]),_v(" "),_c('div',{staticClass:"site-nav-dropdown-btn-container"},[_c('i',{staticClass:"site-nav-dropdown-btn-icon site-nav-rotate-icon",attrs:{"onclick":"handleSiteNavClick(this.parentNode.parentNode, false); event.stopPropagation();"}},[_c('span',{staticClass:"glyphicon glyphicon-menu-down",attrs:{"aria-hidden":"true"}})])])]),_c('ul',{staticClass:"site-nav-dropdown-container site-nav-dropdown-container-open site-nav-list"},[_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/cli.html"}},[_v("CLI syntax reference")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/styleGuides.html"}},[_v("Style guides")])])])])])])],1)],1)])]),_v(" "),_m(0)],1),_v(" "),_m(1)])} +with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"fixed":""}},[_c('navbar',{attrs:{"type":"dark"},scopedSlots:_u([{key:"brand",fn:function(){return [_c('a',{staticClass:"navbar-brand",attrs:{"href":"/index.html","title":"Home"}},[_c('img',{attrs:{"width":"30px","src":"/favicon.ico"}})])]},proxy:true},{key:"right",fn:function(){return [_c('li',[_c('form',{staticClass:"navbar-form"},[_c('searchbar',{attrs:{"data":searchData,"placeholder":"Search","on-hit":searchCallback,"menu-align-right":""}})],1)])]},proxy:true}])},[_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/index.html"}},[_v("HOME")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/showcase.html"}},[_v("SHOWCASE")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/ug/index.html"}},[_v("USER GUIDE")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/dg/index.html"}},[_v("DEVELOPER GUIDE")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/about.html"}},[_v("ABOUT")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/contact.html"}},[_v("CONTACT")])]),_v(" "),_c('li',{attrs:{"tags":"dev"}},[_c('a',{staticClass:"nav-link",attrs:{"href":"https://reposense.org","target":"_blank"}},[_c('span',[_c('span',{staticClass:"fas fa-external-link-alt",attrs:{"aria-hidden":"true"}}),_v(" PRODUCTION SITE")])])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"https://github.com/RepoSense/reposense","target":"_blank"}},[_c('span',[_c('span',{staticClass:"fab fa-github",attrs:{"aria-hidden":"true"}})])])])])],1),_v(" "),_c('div',{attrs:{"id":"flex-body"}},[_c('overlay-source',{staticClass:"fixed-header-padding",attrs:{"id":"site-nav","tag-name":"nav","to":"site-nav"}},[_c('div',{staticClass:"site-nav-top"},[_c('div',{staticClass:"font-weight-bold mb-2",staticStyle:{"font-size":"1.25rem"}},[_c('span',[_c('strong',[_c('strong',[_v("DEVELOPER GUIDE")])])])])]),_v(" "),_c('div',{staticClass:"nav-component slim-scroll"},[_c('div',[_c('site-nav',[_c('overlay-source',{staticClass:"site-nav-list site-nav-list-root",attrs:{"tag-name":"ul","to":"mb-site-nav"}},[_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/index.html"}},[_c('strong',[_v("Contributing")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/settingUp.html"}},[_c('strong',[_v("Setting up")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/learningBasics.html"}},[_c('strong',[_v("Learning the basics")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/workflow.html"}},[_c('strong',[_v("Workflow")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('strong',[_v("Design and implementation")]),_v(" "),_c('div',{staticClass:"site-nav-dropdown-btn-container"},[_c('i',{staticClass:"site-nav-dropdown-btn-icon site-nav-rotate-icon",attrs:{"onclick":"handleSiteNavClick(this.parentNode.parentNode, false); event.stopPropagation();"}},[_c('span',{staticClass:"glyphicon glyphicon-menu-down",attrs:{"aria-hidden":"true"}})])])]),_c('ul',{staticClass:"site-nav-dropdown-container site-nav-dropdown-container-open site-nav-list"},[_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/architecture.html"}},[_v("Architecture")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/report.html"}},[_v("HTML report")])])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/projectManagement.html"}},[_c('strong',[_v("Project management")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/devOpsGuide.html"}},[_c('strong',[_v("DevOps guide")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('strong',[_v("Appendices")]),_v(" "),_c('div',{staticClass:"site-nav-dropdown-btn-container"},[_c('i',{staticClass:"site-nav-dropdown-btn-icon site-nav-rotate-icon",attrs:{"onclick":"handleSiteNavClick(this.parentNode.parentNode, false); event.stopPropagation();"}},[_c('span',{staticClass:"glyphicon glyphicon-menu-down",attrs:{"aria-hidden":"true"}})])])]),_c('ul',{staticClass:"site-nav-dropdown-container site-nav-dropdown-container-open site-nav-list"},[_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/cli.html"}},[_v("CLI syntax reference")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/styleGuides.html"}},[_v("Style guides")])])])])])])],1)],1)])]),_v(" "),_m(0),_v(" "),_c('overlay-source',{staticClass:"fixed-header-padding",attrs:{"id":"page-nav","tag-name":"nav","to":"page-nav"}},[_c('div',{staticClass:"nav-component slim-scroll"},[_c('overlay-source',{staticClass:"nav nav-pills flex-column my-0 small no-flex-wrap",attrs:{"id":"mb-page-nav","tag-name":"nav","to":"mb-page-nav"}},[_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#devops-guide"}},[_v("DevOps Guide‎")]),_v(" "),_c('nav',{staticClass:"nav nav-pills flex-column my-0 nested no-flex-wrap"},[_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#github-actions"}},[_v("GitHub Actions‎")]),_v(" "),_c('nav',{staticClass:"nav nav-pills flex-column my-0 nested no-flex-wrap"},[_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#continuous-integration"}},[_v("Continuous integration‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#report-and-documentation-previews"}},[_v("Report and documentation previews‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#github-pages"}},[_v("GitHub Pages‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#stale-pull-requests"}},[_v("Stale pull requests‎")])]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#codecov"}},[_v("Codecov‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#surge-sh"}},[_v("Surge.sh‎")])])])],1)])],1),_v(" "),_m(1)])} }; var pageVueStaticRenderFns = [function anonymous( ) { with(this){return _c('div',{staticClass:"fixed-header-padding",attrs:{"id":"content-wrapper"}},[_c('h1',{staticClass:"display-4",attrs:{"id":"devops-guide"}},[_c('span',[_v("DevOps Guide")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#devops-guide","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{staticClass:"lead"},[_c('p',[_v("This page documents the various components that form part of the DevOps infrastructure that RepoSense uses.")])]),_v(" "),_c('h2',{attrs:{"id":"github-actions"}},[_v("GitHub Actions"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#github-actions","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('a',{attrs:{"href":"https://docs.github.com/en/actions"}},[_v("GitHub Actions")]),_v(" is a platform that is used by RepoSense for running the test suite and is primarily used for continuous integration and testing. The test suite is stored in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(".github/workflows/")]),_v(" and comprises of:")]),_v(" "),_c('ul',[_c('li',[_v("Unit tests (in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("src/tests/")]),_v(")")]),_v(" "),_c('li',[_v("System tests (in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("src/systemtest/")]),_v(")")]),_v(" "),_c('li',[_v("Frontend tests (in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("frontend/cypress/tests/")]),_v(")")])]),_v(" "),_c('h3',{attrs:{"id":"continuous-integration"}},[_v("Continuous integration"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#continuous-integration","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("All three types of tests in the test suite are run in a single GitHub Actions workflow called \"Continuous Integration\". The steps are defined in "),_c('a',{attrs:{"href":"https://github.com/reposense/RepoSense/blob/master/.github/workflows/integration.yml"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("integration.yml")])]),_v(" and are split into two types of jobs:")]),_v(" "),_c('ol',[_c('li',[_v("Ubuntu/macOS/Windows JDK 11 ("),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("mainbuild")]),_v("): Runs both unit tests and system tests on JDK 11 running on supported Ubuntu, macOS and Windows versions. For Ubuntu, this job also produces a RepoSense report and the MarkBind documentation website for previewing.")]),_v(" "),_c('li',[_v("Cypress frontend tests ("),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("cypress")]),_v("): Runs only the frontend tests on JDK 11 running on Ubuntu.")])]),_v(" "),_c('p',[_v("The list of supported OS versions are "),_c('a',{attrs:{"href":"https://docs.github.com/en/actions/using-github-hosted-runners/about-github-hosted-runners#supported-runners-and-hardware-resources"}},[_v("available on the GitHub Docs website")]),_v(". These jobs should be updated regularly whenever RepoSense supports newer versions of the Java Development Kit (JDK) as well as when new OS versions are made available (via the job OS matrix). Frontend tests are run separately to take advantage of parallel job execution.")]),_v(" "),_c('p',[_v("Some of the jobs execute some commands that are too complicated to be included in the workflow configuration files. Such commands are written in the form of a bash script and are located in the "),_c('a',{attrs:{"href":"https://github.com/reposense/RepoSense/tree/master/config/gh-actions"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("config/gh-actions")])]),_v(" folder.")]),_v(" "),_c('p',[_v("This workflow is run for both incoming pull requests to any branch as well as direct commits to any branch in the repository.")]),_v(" "),_c('p',[_v("Cypress frontend tests are run against reports generated from config files in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("frontend/cypress/config")]),_v(". It uses the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("cypress")]),_v(" branch of the RepoSense repository which is kept independent of "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("master")]),_v(" and should be updated only when there are new frontend tests that need to be accommodated.")]),_v(" "),_c('h3',{attrs:{"id":"report-and-documentation-previews"}},[_v("Report and documentation previews"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#report-and-documentation-previews","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("For each pull request to any branch in the repository, a RepoSense report and the MarkBind documentation website is generated based on the code submitted in the pull request. This is to facilitate pull request reviewers in being able to quickly preview how the RepoSense report and/or the documentation website will change after the pull request is merged.")]),_v(" "),_c('p',[_v("Due to "),_c('a',{attrs:{"href":"https://securitylab.github.com/research/github-actions-preventing-pwn-requests"}},[_v("security considerations in preventing pwn requests")]),_v(", the deployment of the report and documentation previews were split across two workflows in "),_c('a',{attrs:{"href":"https://github.com/reposense/RepoSense/pull/1411"}},[_v("pull request #1411")]),_v(":")]),_v(" "),_c('ol',[_c('li',[_v("Surge.sh pending build (defined in "),_c('a',{attrs:{"href":"https://github.com/reposense/RepoSense/blob/master/.github/workflows/pending.yml"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("pending.yml")])]),_v("): Used for gathering information about the pull request and update the pull request checklist to indicate that the previews are pending.")]),_v(" "),_c('li',[_v("Surge.sh build preview (defined in "),_c('a',{attrs:{"href":"https://github.com/reposense/RepoSense/blob/master/.github/workflows/surge.yml"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("surge.yml")])]),_v("): Used for actually deploying the RepoSense report and documentation website to Surge.sh and updating the pull request checklist to link to the preview websites.")])]),_v(" "),_c('p',[_v("The previews are recognised as GitHub deployments and are named "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("dashboard-$PRNUMBER")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("docs-$PRNUMBER")]),_v(", where "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("$PRNUMBER")]),_v(" is the pull request number. Once a preview is ready, the reviewer would be able to click on \"View deployment\" or \"Show environments\" in the pull request to open the preview websites.")]),_v(" "),_c('p',[_v("Both the \"Surge.sh pending build\" and \"Continuous Integration\" workflows produce an artifact respectively, which is then downloaded by the \"Surge.sh build preview\" workflow to be deployed to Surge.sh. Due to limitations in GitHub Actions in determining the workflow execution order, the \"Surge.sh pending build\" workflow is assumed to have been completed before the \"Continuous Integration\" workflow is completed.")]),_v(" "),_c('p',[_v("This task is not performed on commits to the repository, as there is no need to do so.")]),_v(" "),_c('p',[_v("After the pull request is closed or merged, the Surge.sh deployments are retained, while the GitHub environments for them are cleared by another workflow \"Clear deployments for closed pull requests\" (defined in "),_c('a',{attrs:{"href":"https://github.com/reposense/RepoSense/blob/master/.github/workflows/delete-deploy.yml"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("delete-deploy.yml")])]),_v("). The workflow uses "),_c('a',{attrs:{"href":"https://github.com/reposense/RepoSense/blob/master/config/gh-actions/delete-deploy.sh"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("delete-deploy.sh")])]),_v(" (found in the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("config/gh-actions/")]),_v(" folder) to remove the environments on GitHub, and to leave a comment on the pull request with links to the Surge.sh previews for later reference.")]),_v(" "),_c('h3',{attrs:{"id":"github-pages"}},[_v("GitHub Pages"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#github-pages","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("This task builds the MarkBind documentation website on every push to the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("master")]),_v(" branch. The steps are defined in "),_c('a',{attrs:{"href":"https://github.com/reposense/RepoSense/blob/master/.github/workflows/gh-pages.yml"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("gh-pages.yml")])]),_v(".")]),_v(" "),_c('h3',{attrs:{"id":"stale-pull-requests"}},[_v("Stale pull requests"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#stale-pull-requests","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("This task automates the cleaning up of the pull requests by automatically marking inactive pull requests as stale and subsequently closing them. The steps and configurations are defined in "),_c('a',{attrs:{"href":"https://github.com/reposense/RepoSense/blob/master/.github/workflows/stale.yml"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("stale.yml")])]),_v(" and the job is triggered automatically once per day.")]),_v(" "),_c('h2',{attrs:{"id":"codecov"}},[_v("Codecov"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#codecov","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('a',{attrs:{"href":"https://app.codecov.io/gh/reposense/RepoSense"}},[_v("Codecov")]),_v(" is a platform for checking the code coverage status of the project and the pull request patch. It runs automatically on each pull request and the settings are located in "),_c('a',{attrs:{"href":"https://github.com/reposense/RepoSense/blob/master/codecov.yml"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("codecov.yml")])]),_v(".")]),_v(" "),_c('h2',{attrs:{"id":"surge-sh"}},[_v("Surge.sh"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#surge-sh","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Surge.sh is a platform for hosting the RepoSense report and documentation preview builds. The deployment is automatically performed by the \"Surge.sh build preview\" job using the "),_c('a',{attrs:{"href":"https://github.com/reposense/RepoSense/blob/master/config/gh-actions/deploy.sh"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("deploy.sh")])]),_v(" script in the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("config/gh-actions/")]),_v(" folder.")]),_v(" "),_c('p',[_v("For authentication, two secrets are stored and used in GitHub Actions:")]),_v(" "),_c('ol',[_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("SURGE_LOGIN")]),_v(" - Holds the email address to use for the Surge.sh account")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("SURGE_TOKEN")]),_v(" - Holds the secret account token generated for the above account (generated using "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("surge token")]),_v(")")])]),_v(" "),_c('p',[_v("The "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("surge")]),_v(" command automatically detects the existence of these two environment variables and use them for authentication when deploying the RepoSense report and documentation build previews.")]),_v(" "),_c('p',[_v("Currently, deployments are kept forever, even after the pull request is merged or closed. There is currently no existing functionality to automatically clean up deployments after they are no longer useful.")])])} },function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('small',[_v("["),_c('span',[_c('strong',[_v("Powered by")])]),_v(" "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"30"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.2")]),_v(", generated on Tue, 14 May 2024, 13:12:51 UTC]")])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('small',[_v("["),_c('span',[_c('strong',[_v("Powered by")])]),_v(" "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"30"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.2")]),_v(", generated on Thu, 16 May 2024, 22:31:25 UTC]")])])])} }]; \ No newline at end of file diff --git a/dg/index.html b/dg/index.html index f1773ec5e1..3624595243 100644 --- a/dg/index.html +++ b/dg/index.html @@ -14,7 +14,7 @@

    Developer guide

    Contributing

    Thank you for your interest in contributing to RepoSense! We welcome PRs, especially from students.

    Here is a quick overview of how to get started.

    1. Set up the project on your computer (see the Setting up page)
    2. Learn the basics of the required background knowledge (see the Learning Basics page)
    3. Learn our workflow (see the Workflow page)
    4. Submit PRs as per the workflow. If you encounter any problems, post in our issue tracker.

    To gain a more solid understanding of the project implementation and workflow, you may want to start by working on issues that are suitable for first timers.

    We look forward to your PR. Happy coding!

    +

    Developer guide

    Contributing

    Thank you for your interest in contributing to RepoSense! We welcome PRs, especially from students.

    Here is a quick overview of how to get started.

    1. Set up the project on your computer (see the Setting up page)
    2. Learn the basics of the required background knowledge (see the Learning Basics page)
    3. Learn our workflow (see the Workflow page)
    4. Submit PRs as per the workflow. If you encounter any problems, post in our issue tracker.

    To gain a more solid understanding of the project implementation and workflow, you may want to start by working on issues that are suitable for first timers.

    We look forward to your PR. Happy coding!

    diff --git a/dg/index.page-vue-render.js b/dg/index.page-vue-render.js index 42bb2e567a..89c7f7a0a1 100644 --- a/dg/index.page-vue-render.js +++ b/dg/index.page-vue-render.js @@ -1,7 +1,7 @@ var pageVueRenderFn = function anonymous( ) { -with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"fixed":""}},[_c('navbar',{attrs:{"type":"dark"},scopedSlots:_u([{key:"brand",fn:function(){return [_c('a',{staticClass:"navbar-brand",attrs:{"href":"/index.html","title":"Home"}},[_c('img',{attrs:{"width":"30px","src":"/favicon.ico"}})])]},proxy:true},{key:"right",fn:function(){return [_c('li',[_c('form',{staticClass:"navbar-form"},[_c('searchbar',{attrs:{"data":searchData,"placeholder":"Search","on-hit":searchCallback,"menu-align-right":""}})],1)])]},proxy:true}])},[_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/index.html"}},[_v("HOME")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/showcase.html"}},[_v("SHOWCASE")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/ug/index.html"}},[_v("USER GUIDE")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/dg/index.html"}},[_v("DEVELOPER GUIDE")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/about.html"}},[_v("ABOUT")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/contact.html"}},[_v("CONTACT")])]),_v(" "),_c('li',{attrs:{"tags":"dev"}},[_c('a',{staticClass:"nav-link",attrs:{"href":"https://reposense.org","target":"_blank"}},[_c('span',[_c('span',{staticClass:"fas fa-external-link-alt",attrs:{"aria-hidden":"true"}}),_v(" PRODUCTION SITE")])])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"https://github.com/RepoSense/reposense","target":"_blank"}},[_c('span',[_c('span',{staticClass:"fab fa-github",attrs:{"aria-hidden":"true"}})])])])])],1),_v(" "),_c('div',{attrs:{"id":"flex-body"}},[_c('overlay-source',{staticClass:"fixed-header-padding",attrs:{"id":"site-nav","tag-name":"nav","to":"site-nav"}},[_c('div',{staticClass:"site-nav-top"},[_c('div',{staticClass:"font-weight-bold mb-2",staticStyle:{"font-size":"1.25rem"}},[_c('span',[_c('strong',[_c('strong',[_v("DEVELOPER GUIDE")])])])])]),_v(" "),_c('div',{staticClass:"nav-component slim-scroll"},[_c('div',[_c('site-nav',[_c('overlay-source',{staticClass:"site-nav-list site-nav-list-root",attrs:{"tag-name":"ul","to":"mb-site-nav"}},[_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/index.html"}},[_c('strong',[_v("Contributing")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/settingUp.html"}},[_c('strong',[_v("Setting up")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/learningBasics.html"}},[_c('strong',[_v("Learning the basics")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/workflow.html"}},[_c('strong',[_v("Workflow")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('strong',[_v("Design and implementation")]),_v(" "),_c('div',{staticClass:"site-nav-dropdown-btn-container"},[_c('i',{staticClass:"site-nav-dropdown-btn-icon site-nav-rotate-icon",attrs:{"onclick":"handleSiteNavClick(this.parentNode.parentNode, false); event.stopPropagation();"}},[_c('span',{staticClass:"glyphicon glyphicon-menu-down",attrs:{"aria-hidden":"true"}})])])]),_c('ul',{staticClass:"site-nav-dropdown-container site-nav-dropdown-container-open site-nav-list"},[_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/architecture.html"}},[_v("Architecture")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/report.html"}},[_v("HTML report")])])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/projectManagement.html"}},[_c('strong',[_v("Project management")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/devOpsGuide.html"}},[_c('strong',[_v("DevOps guide")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('strong',[_v("Appendices")]),_v(" "),_c('div',{staticClass:"site-nav-dropdown-btn-container"},[_c('i',{staticClass:"site-nav-dropdown-btn-icon site-nav-rotate-icon",attrs:{"onclick":"handleSiteNavClick(this.parentNode.parentNode, false); event.stopPropagation();"}},[_c('span',{staticClass:"glyphicon glyphicon-menu-down",attrs:{"aria-hidden":"true"}})])])]),_c('ul',{staticClass:"site-nav-dropdown-container site-nav-dropdown-container-open site-nav-list"},[_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/cli.html"}},[_v("CLI syntax reference")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/styleGuides.html"}},[_v("Style guides")])])])])])])],1)],1)])]),_v(" "),_c('div',{staticClass:"fixed-header-padding",attrs:{"id":"content-wrapper"}},[_m(0),_v(" "),_m(1),_v(" "),_m(2),_v(" "),_c('p',[_v("Here is a quick overview of how to get started.")]),_v(" "),_m(3),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("To gain a more solid understanding of the project implementation and workflow, you may want to start by working on "),_c('a',{attrs:{"href":"https://github.com/reposense/RepoSense/issues?q=is%3Aopen+is%3Aissue+label%3Ad.FirstTimers"}},[_v("issues that are suitable for first timers")]),_v(".")])]),_v(" "),_c('p',[_v("We look forward to your PR. Happy coding!")])],1)],1),_v(" "),_m(4)])} +with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"fixed":""}},[_c('navbar',{attrs:{"type":"dark"},scopedSlots:_u([{key:"brand",fn:function(){return [_c('a',{staticClass:"navbar-brand",attrs:{"href":"/index.html","title":"Home"}},[_c('img',{attrs:{"width":"30px","src":"/favicon.ico"}})])]},proxy:true},{key:"right",fn:function(){return [_c('li',[_c('form',{staticClass:"navbar-form"},[_c('searchbar',{attrs:{"data":searchData,"placeholder":"Search","on-hit":searchCallback,"menu-align-right":""}})],1)])]},proxy:true}])},[_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/index.html"}},[_v("HOME")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/showcase.html"}},[_v("SHOWCASE")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/ug/index.html"}},[_v("USER GUIDE")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/dg/index.html"}},[_v("DEVELOPER GUIDE")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/about.html"}},[_v("ABOUT")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/contact.html"}},[_v("CONTACT")])]),_v(" "),_c('li',{attrs:{"tags":"dev"}},[_c('a',{staticClass:"nav-link",attrs:{"href":"https://reposense.org","target":"_blank"}},[_c('span',[_c('span',{staticClass:"fas fa-external-link-alt",attrs:{"aria-hidden":"true"}}),_v(" PRODUCTION SITE")])])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"https://github.com/RepoSense/reposense","target":"_blank"}},[_c('span',[_c('span',{staticClass:"fab fa-github",attrs:{"aria-hidden":"true"}})])])])])],1),_v(" "),_c('div',{attrs:{"id":"flex-body"}},[_c('overlay-source',{staticClass:"fixed-header-padding",attrs:{"id":"site-nav","tag-name":"nav","to":"site-nav"}},[_c('div',{staticClass:"site-nav-top"},[_c('div',{staticClass:"font-weight-bold mb-2",staticStyle:{"font-size":"1.25rem"}},[_c('span',[_c('strong',[_c('strong',[_v("DEVELOPER GUIDE")])])])])]),_v(" "),_c('div',{staticClass:"nav-component slim-scroll"},[_c('div',[_c('site-nav',[_c('overlay-source',{staticClass:"site-nav-list site-nav-list-root",attrs:{"tag-name":"ul","to":"mb-site-nav"}},[_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/index.html"}},[_c('strong',[_v("Contributing")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/settingUp.html"}},[_c('strong',[_v("Setting up")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/learningBasics.html"}},[_c('strong',[_v("Learning the basics")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/workflow.html"}},[_c('strong',[_v("Workflow")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('strong',[_v("Design and implementation")]),_v(" "),_c('div',{staticClass:"site-nav-dropdown-btn-container"},[_c('i',{staticClass:"site-nav-dropdown-btn-icon site-nav-rotate-icon",attrs:{"onclick":"handleSiteNavClick(this.parentNode.parentNode, false); event.stopPropagation();"}},[_c('span',{staticClass:"glyphicon glyphicon-menu-down",attrs:{"aria-hidden":"true"}})])])]),_c('ul',{staticClass:"site-nav-dropdown-container site-nav-dropdown-container-open site-nav-list"},[_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/architecture.html"}},[_v("Architecture")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/report.html"}},[_v("HTML report")])])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/projectManagement.html"}},[_c('strong',[_v("Project management")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/devOpsGuide.html"}},[_c('strong',[_v("DevOps guide")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('strong',[_v("Appendices")]),_v(" "),_c('div',{staticClass:"site-nav-dropdown-btn-container"},[_c('i',{staticClass:"site-nav-dropdown-btn-icon site-nav-rotate-icon",attrs:{"onclick":"handleSiteNavClick(this.parentNode.parentNode, false); event.stopPropagation();"}},[_c('span',{staticClass:"glyphicon glyphicon-menu-down",attrs:{"aria-hidden":"true"}})])])]),_c('ul',{staticClass:"site-nav-dropdown-container site-nav-dropdown-container-open site-nav-list"},[_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/cli.html"}},[_v("CLI syntax reference")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/styleGuides.html"}},[_v("Style guides")])])])])])])],1)],1)])]),_v(" "),_c('div',{staticClass:"fixed-header-padding",attrs:{"id":"content-wrapper"}},[_m(0),_v(" "),_m(1),_v(" "),_m(2),_v(" "),_c('p',[_v("Here is a quick overview of how to get started.")]),_v(" "),_m(3),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("To gain a more solid understanding of the project implementation and workflow, you may want to start by working on "),_c('a',{attrs:{"href":"https://github.com/reposense/RepoSense/issues?q=is%3Aopen+is%3Aissue+label%3Ad.FirstTimers"}},[_v("issues that are suitable for first timers")]),_v(".")])]),_v(" "),_c('p',[_v("We look forward to your PR. Happy coding!")])],1),_v(" "),_c('overlay-source',{staticClass:"fixed-header-padding",attrs:{"id":"page-nav","tag-name":"nav","to":"page-nav"}},[_c('div',{staticClass:"nav-component slim-scroll"})])],1),_v(" "),_m(4)])} }; var pageVueStaticRenderFns = [function anonymous( ) { @@ -17,6 +17,6 @@ with(this){return _c('div',{staticClass:"lead"},[_c('p',[_c('strong',[_v("Thank with(this){return _c('ol',[_c('li',[_c('strong',[_v("Set up the project")]),_v(" on your computer (see "),_c('a',{attrs:{"href":"/RepoSense/dg/settingUp.html"}},[_v("the "),_c('em',[_v("Setting up")]),_v(" page")]),_v(")")]),_v(" "),_c('li',[_c('strong',[_v("Learn the basics")]),_v(" of the required background knowledge (see "),_c('a',{attrs:{"href":"/RepoSense/dg/learningBasics.html"}},[_v("the "),_c('em',[_v("Learning Basics")]),_v(" page")]),_v(")")]),_v(" "),_c('li',[_c('strong',[_v("Learn our workflow")]),_v(" (see "),_c('a',{attrs:{"href":"/RepoSense/dg/workflow.html"}},[_v("the "),_c('em',[_v("Workflow")]),_v(" page")]),_v(")")]),_v(" "),_c('li',[_c('strong',[_v("Submit PRs")]),_v(" as per the workflow. If you encounter any problems, post in "),_c('a',{attrs:{"href":"https://github.com/reposense/RepoSense/issues"}},[_v("our issue tracker")]),_v(".")])])} },function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('small',[_v("["),_c('span',[_c('strong',[_v("Powered by")])]),_v(" "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"30"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.2")]),_v(", generated on Tue, 14 May 2024, 13:12:51 UTC]")])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('small',[_v("["),_c('span',[_c('strong',[_v("Powered by")])]),_v(" "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"30"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.2")]),_v(", generated on Thu, 16 May 2024, 22:31:25 UTC]")])])])} }]; \ No newline at end of file diff --git a/dg/learningBasics.html b/dg/learningBasics.html index 0e5d40da0f..6ee420cac1 100644 --- a/dg/learningBasics.html +++ b/dg/learningBasics.html @@ -11,12 +11,12 @@ - +

    Learning the Basics

    This is a learning guide for developers who are new to RepoSense.

    Depending on what you know already and what you would like to work on (i.e., backend or frontend), you may find certain sections irrelevant to you and you can skip them accordingly.

    Backend

    This section is for developers who want to contribute to the backend of RepoSense. You may skip this section if you want to contribute as a pure frontend developer. Before you get started, you should have set up the project on your computer according to the Setting up page.

    The backend implementation of RepoSense is located in src/main.

    Step 1 Know Java

    The RepoSense backend is mostly written in Java 11.

    1. You need to have a basic knowledge of Java before getting started, including its syntax, API, and certain frameworks such as JUnit.
    2. Once you are familiar with the basic syntax, you may wish to learn more advanced topics such as concurrency, synchronization, and streams. These topics can help you to understand certain part of the backend implementation (concurrent cloning and analysis of multiple repositories, etc.). They are optional but you may find them useful when working on certain issues.

    Step 2 Learn the RepoSense backend architecture

    You may want to refer to the backend architecture to understand the RepoSense backend implementation logic.

    To gain a more concrete idea of how the backend works, you can use the IDE Debugger and run RepoSense under the debugging mode to trace through the steps of how arguments from command line and CSV files are parsed, how repositories are cloned and analyzed, and how the JSON files are generated.

    The information below is for Intellij. If you are using a different IDE, you may need to check the documentation of how to use the debugger separately.

    • Check the debugging guide if you are not familiar with debugging in Intelij.
    • In RepoSense.java, the main class, set appropriate break points. Here are some relevant method calls in the main method at which you can set the breakpoints:
      • ArgsParser.parse(args): RepoSense parses the CLI arguments from the command given by the user.
      • getRepoConfigurations(cliArguments): RepoSense gets the configuration for each repository by parsing the CSV files.
      • getReportConfigurations(cliArguments): RepoSense gets the report configuration (report title) by parsing the JSON files.
      • ReportGenerator.generateReposReport(...) This is where the bulk of the work is conducted, including cloning repositories, analyzing repositories, and generating the JSON files to be used by the report.
    • To supply debugging arguments, right-click on the run button of RepoSense.main, click Modify Run Configuration, and add CLI flags in Program arguments. Examples: --since 16/12/2021 --until 18/12/2022; -s 16/12/2021 -u 18/12/2022.

    When tracing through the program execution, you can cross reference the architecture diagram and Javadoc of the class and method to check your understanding of the procedure.

    Step 3 Gain some hands-on experience

    Here are some small tasks for you to gain some basic knowledge of the code related to the RepoSense backend. You can do each in a separate branch in your local copy of the code.

    Task 1: Add a flag to pretty-print the JSON file


    Task 2: Add exception message during repository cloning to the summary view


    This is only for your practice. There is no need for you to commit this change and submit it in a pull request.

    Step 4 Next Step

    You can now proceed to learn the contributing workflow.

    Frontend

    This section is for developers who want to contribute to the frontend of RepoSense. You may skip this section if you want to contribute as a pure backend developer.

    The frontend implementation of RepoSense is located in frontend/src.

    Step 1 Learn the necessary tools

    It is necessary for you to learn the basics of Vue.js, Pug, and SCSS before working on the project.

    Vue.js

    Vue.js uses JavaScript as its programming language. Before learning Vue.js, you may need to first get yourself familiar with JavaScript syntax first. -You can refer to the Javascript documentation to learn the basic syntax. There are plenty of other resources available and please feel free to find the resource most suitable for you.

    RepoSense uses Vue.js (Vue3) in its front-end implementation. In particular, major user interface components, such as summary view, authorship view, and zoom view, are implemented as Vue components. The corresponding source files are in frontend/src.

    • If you are new to Vue.js, you may want to start learning by looking at the beginner tutorial.
    • You can dive deeper later by checking the Vue.js documentation to learn about essential concepts such as component life cycle hooks, and component properties.
    • It is recommended if you can work on some small projects first to gain more solid understanding of Vue.js.

    The guide above uses HTML as the component template, which is not the case with RepoSense. You may wish to learn more about Pug and its connection with HTML.

    Vuex

    RepoSense uses Vuex for the state management of the Vue components.

    • You can check the Vuex guide to find out how Vuex can be used in a Vue project.
    • There is also a course available that will walk you through an example of creating Vue application with Vuex.

    Pug

    RepoSense uses Pug files as the template of each Vue component. The corresponding HTML templates will later be generated from the Pug files by spuild when generating the report.

    Since Pug is used to generate the HTML template, it is recommended that you have a basic knowledge of HTML before starting to learn Pug. Once you understand how HTML works, you can proceed to focus on how Pug is translated into HTML.

    Scss

    SCSS is used for styling the Pug template. The corresponding CSS will later be generated from the SCSS files by spuild when generating the report. The corresponding source files are in frontend/src/styles.

    It is recommended that you have a basic knowledge of CSS before starting to learn SCSS. Once you understand how CSS works, you can proceed to focus on how SCSS is translated into CSS.

    • You can refer to the style rules to learn about the similarities and differences between SCSS and CSS.

    Step 2 Learn the RepoSense frontend architecture

    • You may want to refer to the frontend architecture to understand the implementation.
    • Another way for you to understand the frontend is to use Vue.js devtools to learn how the various Vue Components interact with each other. You can refer to the frontend debugging guide for more information.

    Step 3 Gain some hands-on experience

    Here are some small tasks for you to gain some basic knowledge of the code related to the RepoSense frontend. You can do each in a separate branch in your local copy of the code.

    Task 1: Highlight the selected author name in the summary view


    Task 2: Add tooltip for file path in authorship panel


    Task 3: Add tooltip for commit message title in zoom panel


    This is only for your practice. There is no need for you to commit this change and submit it in a pull request.

    Step 4 Next Step

    You can now proceed to learn the contributing workflow.

    DevOps

    If you want to understand and contribute to the DevOps aspect of RepoSense, you can refer to the DevOps guide for more information.

    +You can refer to the Javascript documentation to learn the basic syntax. There are plenty of other resources available and please feel free to find the resource most suitable for you.

    RepoSense uses Vue.js (Vue3) in its front-end implementation. In particular, major user interface components, such as summary view, authorship view, and zoom view, are implemented as Vue components. The corresponding source files are in frontend/src.

    The guide above uses HTML as the component template, which is not the case with RepoSense. You may wish to learn more about Pug and its connection with HTML.

    Vuex

    RepoSense uses Vuex for the state management of the Vue components.

    Pug

    RepoSense uses Pug files as the template of each Vue component. The corresponding HTML templates will later be generated from the Pug files by spuild when generating the report.

    Since Pug is used to generate the HTML template, it is recommended that you have a basic knowledge of HTML before starting to learn Pug. Once you understand how HTML works, you can proceed to focus on how Pug is translated into HTML.

    Scss

    SCSS is used for styling the Pug template. The corresponding CSS will later be generated from the SCSS files by spuild when generating the report. The corresponding source files are in frontend/src/styles.

    It is recommended that you have a basic knowledge of CSS before starting to learn SCSS. Once you understand how CSS works, you can proceed to focus on how SCSS is translated into CSS.

    Step 2 Learn the RepoSense frontend architecture

    Step 3 Gain some hands-on experience

    Here are some small tasks for you to gain some basic knowledge of the code related to the RepoSense frontend. You can do each in a separate branch in your local copy of the code.

    Task 1: Highlight the selected author name in the summary view


    Task 2: Add tooltip for file path in authorship panel


    Task 3: Add tooltip for commit message title in zoom panel


    This is only for your practice. There is no need for you to commit this change and submit it in a pull request.

    Step 4 Next Step

    You can now proceed to learn the contributing workflow.

    DevOps

    If you want to understand and contribute to the DevOps aspect of RepoSense, you can refer to the DevOps guide for more information.

    diff --git a/dg/learningBasics.page-vue-render.js b/dg/learningBasics.page-vue-render.js index 983315aa3f..55578edd38 100644 --- a/dg/learningBasics.page-vue-render.js +++ b/dg/learningBasics.page-vue-render.js @@ -1,7 +1,7 @@ var pageVueRenderFn = function anonymous( ) { -with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"fixed":""}},[_c('navbar',{attrs:{"type":"dark"},scopedSlots:_u([{key:"brand",fn:function(){return [_c('a',{staticClass:"navbar-brand",attrs:{"href":"/index.html","title":"Home"}},[_c('img',{attrs:{"width":"30px","src":"/favicon.ico"}})])]},proxy:true},{key:"right",fn:function(){return [_c('li',[_c('form',{staticClass:"navbar-form"},[_c('searchbar',{attrs:{"data":searchData,"placeholder":"Search","on-hit":searchCallback,"menu-align-right":""}})],1)])]},proxy:true}])},[_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/index.html"}},[_v("HOME")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/showcase.html"}},[_v("SHOWCASE")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/ug/index.html"}},[_v("USER GUIDE")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/dg/index.html"}},[_v("DEVELOPER GUIDE")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/about.html"}},[_v("ABOUT")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/contact.html"}},[_v("CONTACT")])]),_v(" "),_c('li',{attrs:{"tags":"dev"}},[_c('a',{staticClass:"nav-link",attrs:{"href":"https://reposense.org","target":"_blank"}},[_c('span',[_c('span',{staticClass:"fas fa-external-link-alt",attrs:{"aria-hidden":"true"}}),_v(" PRODUCTION SITE")])])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"https://github.com/RepoSense/reposense","target":"_blank"}},[_c('span',[_c('span',{staticClass:"fab fa-github",attrs:{"aria-hidden":"true"}})])])])])],1),_v(" "),_c('div',{attrs:{"id":"flex-body"}},[_c('overlay-source',{staticClass:"fixed-header-padding",attrs:{"id":"site-nav","tag-name":"nav","to":"site-nav"}},[_c('div',{staticClass:"site-nav-top"},[_c('div',{staticClass:"font-weight-bold mb-2",staticStyle:{"font-size":"1.25rem"}},[_c('span',[_c('strong',[_c('strong',[_v("DEVELOPER GUIDE")])])])])]),_v(" "),_c('div',{staticClass:"nav-component slim-scroll"},[_c('div',[_c('site-nav',[_c('overlay-source',{staticClass:"site-nav-list site-nav-list-root",attrs:{"tag-name":"ul","to":"mb-site-nav"}},[_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/index.html"}},[_c('strong',[_v("Contributing")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/settingUp.html"}},[_c('strong',[_v("Setting up")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/learningBasics.html"}},[_c('strong',[_v("Learning the basics")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/workflow.html"}},[_c('strong',[_v("Workflow")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('strong',[_v("Design and implementation")]),_v(" "),_c('div',{staticClass:"site-nav-dropdown-btn-container"},[_c('i',{staticClass:"site-nav-dropdown-btn-icon site-nav-rotate-icon",attrs:{"onclick":"handleSiteNavClick(this.parentNode.parentNode, false); event.stopPropagation();"}},[_c('span',{staticClass:"glyphicon glyphicon-menu-down",attrs:{"aria-hidden":"true"}})])])]),_c('ul',{staticClass:"site-nav-dropdown-container site-nav-dropdown-container-open site-nav-list"},[_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/architecture.html"}},[_v("Architecture")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/report.html"}},[_v("HTML report")])])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/projectManagement.html"}},[_c('strong',[_v("Project management")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/devOpsGuide.html"}},[_c('strong',[_v("DevOps guide")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('strong',[_v("Appendices")]),_v(" "),_c('div',{staticClass:"site-nav-dropdown-btn-container"},[_c('i',{staticClass:"site-nav-dropdown-btn-icon site-nav-rotate-icon",attrs:{"onclick":"handleSiteNavClick(this.parentNode.parentNode, false); event.stopPropagation();"}},[_c('span',{staticClass:"glyphicon glyphicon-menu-down",attrs:{"aria-hidden":"true"}})])])]),_c('ul',{staticClass:"site-nav-dropdown-container site-nav-dropdown-container-open site-nav-list"},[_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/cli.html"}},[_v("CLI syntax reference")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/styleGuides.html"}},[_v("Style guides")])])])])])])],1)],1)])]),_v(" "),_c('div',{staticClass:"fixed-header-padding",attrs:{"id":"content-wrapper"}},[_m(0),_v(" "),_m(1),_v(" "),_c('box',{attrs:{"type":"warning","seamless":""}},[_c('p',[_v("Depending on what you know already and what you would like to work on (i.e., backend or frontend), you may find certain sections irrelevant to you and you can skip them accordingly.")])]),_v(" "),_m(2),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("This section is for developers who want to contribute to the backend of RepoSense. You may skip this section if you want to contribute as a pure frontend developer. Before you get started, you should have set up the project on your computer according to "),_c('a',{attrs:{"href":"/RepoSense/dg/settingUp.html"}},[_v("the "),_c('em',[_v("Setting up")]),_v(" page")]),_v(".")])]),_v(" "),_m(3),_v(" "),_m(4),_v(" "),_m(5),_v(" "),_m(6),_v(" "),_m(7),_v(" "),_m(8),_v(" "),_c('p',[_v("To gain a more concrete idea of how the backend works, you can use the IDE Debugger and run RepoSense under the debugging mode to trace through the steps of how arguments from command line and CSV files are parsed, how repositories are cloned and analyzed, and how the JSON files are generated.")]),_v(" "),_c('box',{attrs:{"type":"warning","seamless":""}},[_c('p',[_v("The information below is for "),_c('strong',[_v("Intellij")]),_v(". If you are using a different IDE, you may need to check the documentation of how to use the debugger separately.")])]),_v(" "),_m(9),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("When tracing through the program execution, you can cross reference the architecture diagram and Javadoc of the class and method to check your understanding of the procedure.")])]),_v(" "),_m(10),_v(" "),_c('p',[_v("Here are some small tasks for you to gain some basic knowledge of the code related to the RepoSense backend. You can do each in a separate branch in your local copy of the code.")]),_v(" "),_c('panel',{attrs:{"type":"primary"},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('strong',[_v("Task 1: Add a flag to pretty-print the JSON file")])])]},proxy:true}])},[_v(" "),_c('p',[_c('strong',[_v("Task 1: Add a flag to pretty-print the JSON file")])]),_v(" "),_c('ol',[_c('li',[_c('a',{attrs:{"href":"/RepoSense/ug/generatingReports.html#generating-reports-locally"}},[_v("Generate a report locally")]),_v(".")]),_v(" "),_c('li',[_v("Open a generated JSON file. For example, you can open "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("summary.json")]),_v(" of the generated report.")]),_v(" "),_c('li',[_v("You should see that the content in the JSON is compactly organized in 1 single line. This may affect readability for developer who wants to investigate the content in the JSON file.")])]),_v(" "),_c('p',[_c('strong',[_v("Your Task")])]),_v(" "),_c('p',[_v("Add a new CLI argument "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--use-json-pretty-printing")]),_v(", such that when a user runs the command "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar --repos LIST_OF_REPO_URLS --view --use-json-pretty-printing")]),_v(", the JSON files "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("summary.json")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("authorship.json")]),_v(", and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("commits.json")]),_v(" will be printed in a more readable way.")]),_v(" "),_c('panel',{scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_v("Hint 1")])]},proxy:true}])},[_v(" "),_c('p',[_v("Try to understand the parsing process of the Command Line Arguments, which starts from "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ArgsParser.parse(args)")]),_v(" in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("RepoSense.java")]),_v(" and uses "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ArgumentParser")]),_v(" to capture the arguments in the command string.")]),_v(" "),_c('p',[_v("Therefore, the first step you can take is to add the following to "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ArgsParser")]),_v(".")]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"hljs java"}},[_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-keyword"}},[_v("public")]),_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-keyword"}},[_v("static")]),_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-keyword"}},[_v("final")]),_v(" String[] JSON_PRINT_MODE_FLAGS = "),_c('span',{pre:true,attrs:{"class":"hljs-keyword"}},[_v("new")]),_v(" String[]{"),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"--use-json-pretty-printing\"")]),_v(", "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"-j\"")]),_v("};\n")])])]),_c('p',[_v("In "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("getArgumentParser")]),_v(" method, add the following content to make "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ArgumentParser")]),_v(" capture the new argument.")]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"hljs java"}},[_c('span',[_v("parser.addArgument(JSON_PRINT_MODE_FLAGS)\n")]),_c('span',[_v(" .dest(JSON_PRINT_MODE_FLAGS["),_c('span',{pre:true,attrs:{"class":"hljs-number"}},[_v("0")]),_v("])\n")]),_c('span',[_v(" .action(Arguments.storeTrue())\n")]),_c('span',[_v(" .help("),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"A flag to use json pretty printing when generating the json files.\"")]),_v(");\n")])])])]),_v(" "),_c('panel',{scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_v("Hint 2")])]},proxy:true}])},[_v(" "),_c('p',[_v("After the step in hint 1, the argument is captured by "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ArgumentParser")]),_v(". Now make corresponding changes to "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("CliArguments.java")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ConfigCliArguments.java")]),_v(", and the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("parse")]),_v(" method in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ArgsParser.java")]),_v(" to make the return result of "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("parse")]),_v(" include the new argument.")]),_v(" "),_c('ol',[_c('li',[_v("Add the following content to "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("CliArguments")]),_v(" to include "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("isPrettyPrintingUsed")]),_v(" as a new attribute to the class.")])]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"hljs java"}},[_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-keyword"}},[_v("protected")]),_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-keyword"}},[_v("boolean")]),_v(" isPrettyPrintingUsed;\n")]),_c('span',[_v("\n")]),_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-function"}},[_c('span',{pre:true,attrs:{"class":"hljs-keyword"}},[_v("public")]),_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-keyword"}},[_v("boolean")]),_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-title"}},[_v("isPrettyPrintingUsed")]),_c('span',{pre:true,attrs:{"class":"hljs-params"}},[_v("()")]),_v(" ")]),_v("{\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-keyword"}},[_v("return")]),_v(" isPrettyPrintingUsed;\n")]),_c('span',[_v("}\n")])])]),_c('ol',{attrs:{"start":"2"}},[_c('li',[_v("In the constructor of "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ConfigCliArguments")]),_v(", add "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("isPrettyPrintingUsed")]),_v(" as a new parameter of the method, and add the following instruction to the method body.")])]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"hljs java"}},[_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-keyword"}},[_v("this")]),_v(".isPrettyPrintingUsed = isPrettyPrintingUsed;\n")])])]),_c('ol',{attrs:{"start":"3"}},[_c('li',[_v("In the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("parse")]),_v(" method of "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ArgsParser")]),_v(", add the following instruction to get "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("isJsonPrettyPrintingUsed")]),_v(" from "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ArgmentParser")]),_v(".")])]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"hljs java"}},[_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-keyword"}},[_v("boolean")]),_v(" isJsonPrettyPrintingUsed = results.get(JSON_PRINT_MODE_FLAGS["),_c('span',{pre:true,attrs:{"class":"hljs-number"}},[_v("0")]),_v("]);\n")])])]),_c('ol',{attrs:{"start":"4"}},[_c('li',[_v("Additionally, change the return statement of the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("parse")]),_v(" method so that the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ConfigCliArguments")]),_v(" object returned will now include "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("isJsonPrettyPrintingUsed")]),_v(".")])])]),_v(" "),_c('panel',{scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_v("Hint 3")])]},proxy:true}])},[_v(" "),_c('p',[_v("After the steps in hint 1 and hint 2, the result returned from "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ArgsParser.parse(args)")]),_v(" in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("RepoSense.java")]),_v(" should be able to capture the new argument when it is specified in the command.")]),_v(" "),_c('p',[_v("The next step is to extract the argument from the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("CliArguments")]),_v(" object, and pass it to JSON file writer to notify it of the specified printing mode.")]),_v(" "),_c('p',[_v("Note that the creation and writing of JSON file is invoked in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ReportGenerator.generateReposReport")]),_v(", which calls "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("FileUtil.writeJsonFile")]),_v(" directly to write the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("summary.json")]),_v(" file or indirectly (Check "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("generateIndividualRepoReport")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("generateEmptyRepoReport")]),_v(") to write the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("commits.json")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("authorship.json")]),_v(" files of individual repositories.")]),_v(" "),_c('p',[_v("Therefore, the task now is to make "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("FileUtil.writeJsonFile")]),_v(" switch between different printing mode.")]),_v(" "),_c('ol',[_c('li',[_c('p',[_v("You can find out what "),_c('a',{attrs:{"href":"https://www.javadoc.io/doc/com.google.code.gson/gson/2.8.5/com/google/gson/GsonBuilder.html#setPrettyPrinting--"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Gson.setPrettyPrinting")])]),_v(" does and how it can be used in the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("writeJsonFile")]),_v(" method of "),_c('a',{attrs:{"href":"https://github.com/reposense/RepoSense/blob/master/src/main/java/reposense/util/FileUtil.java"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("FileUtil.java")])]),_v(".")])]),_v(" "),_c('li',[_c('p',[_v("Add the following content to "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("FileUtil")]),_v(".")])])]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"hljs java"}},[_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-keyword"}},[_v("private")]),_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-keyword"}},[_v("static")]),_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-keyword"}},[_v("boolean")]),_v(" isPrettyPrintingUsed = "),_c('span',{pre:true,attrs:{"class":"hljs-keyword"}},[_v("false")]),_v(";\n")])])]),_c('ol',{attrs:{"start":"3"}},[_c('li',[_v("In the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("writeJsonFile")]),_v(" method, Replace the creation of the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Gson")]),_v(" object with the following instructions.")])]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"hljs java"}},[_c('span',[_v("GsonBuilder gsonBuilder = "),_c('span',{pre:true,attrs:{"class":"hljs-keyword"}},[_v("new")]),_v(" GsonBuilder()\n")]),_c('span',[_v(" .registerTypeAdapter(LocalDateTime.class, (JsonSerializer) (date, typeOfSrc, context)\n")]),_c('span',[_v(" -> "),_c('span',{pre:true,attrs:{"class":"hljs-keyword"}},[_v("new")]),_v(" JsonPrimitive(date.format(DateTimeFormatter.ofPattern(GITHUB_API_DATE_FORMAT))))\n")]),_c('span',[_v(" .registerTypeAdapter(FileType.class, "),_c('span',{pre:true,attrs:{"class":"hljs-keyword"}},[_v("new")]),_v(" FileType.FileTypeSerializer());\n")]),_c('span',[_v("Gson gson;\n")]),_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-keyword"}},[_v("if")]),_v(" (isPrettyPrintingUsed) {\n")]),_c('span',[_v(" gson = gsonBuilder.setPrettyPrinting().create();\n")]),_c('span',[_v("} "),_c('span',{pre:true,attrs:{"class":"hljs-keyword"}},[_v("else")]),_v(" {\n")]),_c('span',[_v(" gson = gsonBuilder.create();\n")]),_c('span',[_v("}\n")])])]),_c('ol',{attrs:{"start":"4"}},[_c('li',[_v("To notify "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("FileUtil")]),_v(" of the switch between different printing mode, add the following method to "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("FileUtil")]),_v(".")])]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"hljs java"}},[_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-function"}},[_c('span',{pre:true,attrs:{"class":"hljs-keyword"}},[_v("public")]),_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-keyword"}},[_v("static")]),_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-keyword"}},[_v("void")]),_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-title"}},[_v("setPrettyPrintingMode")]),_c('span',{pre:true,attrs:{"class":"hljs-params"}},[_v("("),_c('span',{pre:true,attrs:{"class":"hljs-keyword"}},[_v("boolean")]),_v(" isPrettyPrintingAdopted)")]),_v(" ")]),_v("{\n")]),_c('span',[_v(" isPrettyPrintingUsed = isPrettyPrintingAdopted;\n")]),_c('span',[_v("}\n")])])]),_c('ol',{attrs:{"start":"5"}},[_c('li',[_v("It is now possible to notify "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("FileUtil")]),_v(" of the printing mode switch by extracting the argument from the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("CliArguments")]),_v(" object in the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("main")]),_v(" method of "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("RepoSense.java")]),_v(" and passing it to the corresponding method in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("FileUtil")]),_v(".")])]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"hljs java"}},[_c('span',[_v("FileUtil.setPrettyPrintingMode(cliArguments.isPrettyPrintingUsed());\n")])])]),_c('p',[_v("Now the parsing of argument and changing of printing mode should have been completed.")])]),_v(" "),_c('panel',{scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_v("Suggested solution")])]},proxy:true}])},[_v(" "),_c('p',[_v("There is more than 1 way to achieve this. By combining the changes in hint 1, hint 2, and hint 3, you should be able to get a possible solution.")]),_v(" "),_c('p',[_v("Try the command "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar --repos https://github.com/reposense/RepoSense.git --view --use-json-pretty-printing")]),_v(" and check the generated JSON files to see if it works.")])])],1),_v(" "),_c('panel',{attrs:{"type":"primary"},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('strong',[_v("Task 2: Add exception message during repository cloning to the summary view")])])]},proxy:true}])},[_v(" "),_c('p',[_c('strong',[_v("Task 2: Add exception message during repository cloning to the summary view")])]),_v(" "),_c('ol',[_c('li',[_v("Open a "),_c('a',{attrs:{"href":"https://dashboard-1507-pr-reposense-reposense.surge.sh/"}},[_v("report")]),_v(".")]),_v(" "),_c('li',[_v("You should see that there is a red panel in the summary view containing the following message, indicating that there is an issue in the cloning process of the repository "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("reposense/testrepo-Empty")]),_v(".")])]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"hljs"}},[_c('span',[_v("reposense/testrepo-Empty[master]\n")]),_c('span',[_v(" Failed to clone from https://github.com/reposense/testrepo-Empty.git\n")])])]),_c('p',[_c('strong',[_v("Your task")])]),_v(" "),_c('p',[_v("For the repository with the message "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Failed to clone from ...")]),_v(", find out what exception causes this cloning error, and add that exception message to the panel as well.")]),_v(" "),_c('panel',{scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_v("Hint 1")])]},proxy:true}])},[_v(" "),_c('p',[_v("You can find out what "),_c('a',{attrs:{"href":"https://github.com/reposense/RepoSense/blob/master/src/main/java/reposense/report/ErrorSummary.java"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ErrorSummary.java")])]),_v(" and "),_c('a',{attrs:{"href":"https://github.com/reposense/RepoSense/blob/master/src/main/java/reposense/report/RepoCloner.java"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("RepoCloner.java")])]),_v(" do, and where they are used.")])]),_v(" "),_c('panel',{scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_v("Hint 2")])]},proxy:true}])},[_v(" "),_c('p',[_v("Try to understand the cloning process.")]),_v(" "),_c('ul',[_c('li',[_v("The cloning process is invoked by "),_c('a',{attrs:{"href":"https://github.com/reposense/RepoSense/blob/master/src/main/java/reposense/report/ReportGenerator.java"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("RepoGenerator.java")])]),_v(" in the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("cloneAndAnalyzeRepos")]),_v(" method, which subsequently calls "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("cloneBare")]),_v(" in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("RepoCloner.java")]),_v(" to start the cloning.")]),_v(" "),_c('li',[_v("The "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("cloneAndAnalyzeRepos")]),_v(" method will then call "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("getRepoLocation")]),_v(" in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("RepoCloner.java")]),_v(" to try to get the repository location.")]),_v(" "),_c('li',[_v("Beneath the surface, "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("RepoCloner")]),_v(" will first execute "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("spawnCloneProcess")]),_v(" and then execute "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("waitForCloneProcess")]),_v(" when it is invoked by "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("RepoGenerator")]),_v(" for the first and second time respectively.")])])]),_v(" "),_c('panel',{scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_v("Hint 3")])]},proxy:true}])},[_v(" "),_c('p',[_v("In "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("RepoCloner")]),_v(", the potential exceptions in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("spawnCloneProcess")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("waitForCloneProcess")]),_v(" are caught but not recorded by "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ErrorSummary")]),_v(".")])]),_v(" "),_c('panel',{scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_v("Suggested solution")])]},proxy:true}])},[_v(" "),_c('p',[_v("There is more than 1 way to achieve this. One solution is shown as the following:")]),_v(" "),_c('p',[_v("Add this to the catch block of "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("spawnCloneProcess")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("waitForCloneProcess")]),_v(", so that the message will be captured in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("summary.json")]),_v(".")]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"hljs java"}},[_c('span',[_v("ErrorSummary.getInstance().addErrorMessage(config.getDisplayName(), e.getMessage());\n")])])])])],1),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("This is only for your practice. There is no need for you to commit this change and submit it in a pull request.")])]),_v(" "),_m(11),_v(" "),_m(12),_v(" "),_m(13),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("This section is for developers who want to contribute to the frontend of RepoSense. You may skip this section if you want to contribute as a pure backend developer.")])]),_v(" "),_m(14),_v(" "),_m(15),_v(" "),_c('p',[_v("It is necessary for you to learn the basics of Vue.js, Pug, and SCSS before working on the project.")]),_v(" "),_m(16),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Vue.js uses JavaScript as its programming language. Before learning "),_c('strong',[_v("Vue.js")]),_v(", you may need to first get yourself familiar with JavaScript syntax first.\nYou can refer to the "),_c('a',{attrs:{"href":"https://devdocs.io/javascript/"}},[_v("Javascript documentation")]),_v(" to learn the basic syntax. There are plenty of other resources available and please feel free to find the resource most suitable for you.")])]),_v(" "),_m(17),_v(" "),_m(18),_v(" "),_c('box',{attrs:{"type":"warning","seamless":""}},[_c('p',[_v("The guide above uses HTML as the component template, which is not the case with RepoSense. You may wish to learn more about "),_c('a',{attrs:{"href":"#pug"}},[_v("Pug")]),_v(" and its connection with HTML.")])]),_v(" "),_m(19),_v(" "),_m(20),_v(" "),_m(21),_v(" "),_m(22),_v(" "),_m(23),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Since Pug is used to generate the HTML template, it is recommended that you have a basic knowledge of HTML before starting to learn Pug. Once you understand how HTML works, you can proceed to focus on how Pug is translated into HTML.")])]),_v(" "),_m(24),_v(" "),_m(25),_v(" "),_m(26),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("It is recommended that you have a basic knowledge of CSS before starting to learn SCSS. Once you understand how CSS works, you can proceed to focus on how SCSS is translated into CSS.")])]),_v(" "),_m(27),_v(" "),_m(28),_v(" "),_m(29),_v(" "),_m(30),_v(" "),_c('p',[_v("Here are some small tasks for you to gain some basic knowledge of the code related to the RepoSense frontend. You can do each in a separate branch in your local copy of the code.")]),_v(" "),_c('panel',{attrs:{"type":"primary"},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('strong',[_v("Task 1: Highlight the selected author name in the summary view")])])]},proxy:true}])},[_v(" "),_c('p',[_c('strong',[_v("Task 1: Highlight the selected author name in the summary view")])]),_v(" "),_c('ol',[_c('li',[_v("Open a "),_c('a',{attrs:{"href":"https://dashboard-1507-pr-reposense-reposense.surge.sh/"}},[_v("report")]),_v(".")]),_v(" "),_c('li',[_v("Randomly open the authorship contribution panel of an author (The icon is "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("")]),_v(").")]),_v(" "),_c('li',[_v("You should see that, after you open the panel, the author title background on the chart panel becomes yellow, and the background of the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("")]),_v(" icon you clicked becomes green.")])]),_v(" "),_c('p',[_c('strong',[_v("Your Task")])]),_v(" "),_c('p',[_v("Make corresponding changes to "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("summary charts")]),_v(" so that in step 3, after opening the panel, the font colour of the author title (in the form of "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("authorDisplayName(authorName)")]),_v(") on the chart panel also becomes green.")]),_v(" "),_c('panel',{scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_v("Hint 1")])]},proxy:true}])},[_v(" "),_c('p',[_v("Try to locate where the author title is in "),_c('a',{attrs:{"href":"https://github.com/reposense/RepoSense/blob/master/frontend/src/components/c-summary-charts.vue"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("c-summary-charts.vue")])]),_v(".")])]),_v(" "),_c('panel',{scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_v("Hint 2")])]},proxy:true}])},[_v(" "),_c('p',[_v("You can check what "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("activeUser")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("activeRepo")]),_v(" do in "),_c('a',{attrs:{"href":"https://github.com/reposense/RepoSense/blob/master/frontend/src/components/c-summary-charts.vue"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("c-summary-charts.vue")])]),_v(".")])]),_v(" "),_c('panel',{scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_v("Hint 3")])]},proxy:true}])},[_v(" "),_c('p',[_v("Refer to how changes are made to the title background and icon background in "),_c('a',{attrs:{"href":"https://github.com/reposense/RepoSense/blob/master/frontend/src/components/c-summary-charts.vue"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("c-summary-charts.vue")])]),_v(".")])]),_v(" "),_c('panel',{scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_v("Hint 4")])]},proxy:true}])},[_v(" "),_c('p',[_v("Some of the CSS styling for "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("c-summary-charts.vue")]),_v(" is in "),_c('a',{attrs:{"href":"https://github.com/reposense/RepoSense/blob/master/frontend/src/styles/style.scss"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("style.scss")])]),_v(". You can add corresponding class selector if necessary.")])]),_v(" "),_c('panel',{scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_v("Suggested solution")])]},proxy:true}])},[_v(" "),_c('p',[_v("There is more than 1 way to achieve this. One solution is shown as the following:")]),_v(" "),_c('p',[_v("Add this to "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("c_summary.scss")]),_v(".")]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"hljs css"}},[_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-selector-class"}},[_v(".active-text")]),_v(" {\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attribute"}},[_v("color")]),_v(": "),_c('span',{pre:true,attrs:{"class":"hljs-built_in"}},[_v("mui-color")]),_v("("),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("'green'")]),_v(");\n")]),_c('span',[_v("}\n")])])]),_c('p',[_v("In "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("c-summary-charts.vue")]),_v(", locate "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("summary-chart__title--name")]),_v(", and add the following to its "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("v-bind:class")]),_v(" attribute map.")]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"hljs"}},[_c('span',[_v("'active-text': user.name === activeUser && user.repoName === activeRepo\n")])])])])],1),_v(" "),_c('panel',{attrs:{"type":"primary"},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('strong',[_v("Task 2: Add tooltip for file path in authorship panel")])])]},proxy:true}])},[_v(" "),_c('p',[_c('strong',[_v("Task 2: Add tooltip for file path in authorship panel")])]),_v(" "),_c('ol',[_c('li',[_v("Open a "),_c('a',{attrs:{"href":"https://dashboard-1507-pr-reposense-reposense.surge.sh/"}},[_v("report")]),_v(".")]),_v(" "),_c('li',[_v("Randomly open the authorship contribution panel of an author (The icon is "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("")]),_v(").")]),_v(" "),_c('li',[_v("Select a random file in the authorship contribution panel, and hover your mouse on an icon on the file title, a corresponding tooltip will show up, suggesting what the purpose of the icon is. However, when you hover the mouse over the file path on the file title, there is no tool tip shown, even if clicking the path itself will also trigger some event.")])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("For example, if you open the authorship contribution panel of an author in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("reposense/RepoSense[master]")]),_v(" and hover the mouse over the triangular icon beside the file path "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("src/main/java/reposense/model/Author.java")]),_v(", you should see a tooltip saying "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Click to hide file details")]),_v(" above the icon. However, when you hover the mouse over the file path "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("src/main/java/reposense/model/Author.java")]),_v(", there is no corresponding tooltip shown.")])]),_v(" "),_c('p',[_c('strong',[_v("Your Task")])]),_v(" "),_c('p',[_v("Make corresponding "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("authorship contribution panel")]),_v(" so that in step 3, when hovering your mouse over the file path:")]),_v(" "),_c('ul',[_c('li',[_v("A tip saying "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("This is the file path. Click to hide file details")]),_v(" will show up when the file details are shown")]),_v(" "),_c('li',[_v("A tip saying "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("This is the file path. Click to show file details")]),_v(" will show up when the file details are not shown.")])]),_v(" "),_c('panel',{scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_v("Hint 1")])]},proxy:true}])},[_v(" "),_c('p',[_v("Try to locate where the file title and the file path are in "),_c('a',{attrs:{"href":"https://github.com/reposense/RepoSense/blob/master/frontend/src/views/c-authorship.vue"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("c-authorship.vue")])]),_v(".")])]),_v(" "),_c('panel',{scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_v("Hint 2")])]},proxy:true}])},[_v(" "),_c('p',[_v("You can check how tooltip is added for the triangular icon in the file title in "),_c('a',{attrs:{"href":"https://github.com/reposense/RepoSense/blob/master/frontend/src/views/c-authorship.vue"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("c-authorship.vue")])]),_v(".")])]),_v(" "),_c('panel',{scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_v("Hint 3")])]},proxy:true}])},[_v(" "),_c('p',[_v("You can check what "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("file.active")]),_v(" does and how it is used to switch between different tooltip messages when hovering the mouse on the corresponding icon.")])]),_v(" "),_c('panel',{scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_v("Suggested solution")])]},proxy:true}])},[_v(" "),_c('p',[_v("There is more than 1 way to achieve this. One solution is shown as the following:")]),_v(" "),_c('ol',[_c('li',[_v("In "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("c-authorship.vue")]),_v(", locate the section that iterates through each file in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("selectedFiles")]),_v(".")]),_v(" "),_c('li',[_v("There is a specific portion of the section that renders the toggle icon, the file index, and the file path of the file title.")]),_v(" "),_c('li',[_v("Try to locate the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("span")]),_v(" tag that renders "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("file.path")]),_v(", and wraps it inside a new "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("tooptip")]),_v(".")]),_v(" "),_c('li',[_v("In the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("tooltip")]),_v(", use the following instructions to handle the switch of tooltip message.")])]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"hljs"}},[_c('span',[_v("span.tooltip-text(v-show=\"file.active\") This is the file path. Click to hide file details\n")]),_c('span',[_v("span.tooltip-text(v-show=\"!file.active\") This is the file path. Click to show file details\n")])])])])],1),_v(" "),_c('panel',{attrs:{"type":"primary"},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('strong',[_v("Task 3: Add tooltip for commit message title in zoom panel")])])]},proxy:true}])},[_v(" "),_c('p',[_c('strong',[_v("Task 3: Add tooltip for commit message title in zoom panel")])]),_v(" "),_c('ol',[_c('li',[_v("Open a "),_c('a',{attrs:{"href":"https://dashboard-1507-pr-reposense-reposense.surge.sh/"}},[_v("report")]),_v(".")]),_v(" "),_c('li',[_v("Randomly open the commits panel of an author.")]),_v(" "),_c('li',[_v("Select a random commit in the commits panel, and hover your mouse on the icons on the commit title, there is no tooltip shown saying that it will redirect you to a different site.")])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("For example, given the "),_c('a',{attrs:{"href":"https://dashboard-1507-pr-reposense-reposense.surge.sh/?search=&sort=groupTitle&sortWithin=title&since=&timeframe=commit&mergegroup=&groupSelect=groupByRepos&breakdown=false&tabOpen=true&tabType=zoom&zA=eugenepeh&zR=reposense%2FRepoSense%5Bmaster%5D&zACS=99.28792569659443&zS=2017-10-09&zFS=&zU=2021-04-04&zMG=undefined&zFTF=commit&zFGS=groupByRepos&zFR=false"}},[_v("report")]),_v(", if you hover the mouse over the commit title "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("README: add acknowledgements section (#978)")]),_v(", there is no corresponding tooltip shown, but when you click on the commit title, you will be redirected to a different site to see the commit details.")])]),_v(" "),_c('p',[_c('strong',[_v("Your Task")])]),_v(" "),_c('p',[_v("Make corresponding changes to "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("zoom panel")]),_v(" so that in step 3, when hovering your mouse over the commit title, a tooltip saying "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Click to view the detailed file changes in the commit")]),_v(" will show up on the commit title.")]),_v(" "),_c('panel',{scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_v("Hint 1")])]},proxy:true}])},[_v(" "),_c('p',[_v("Try to locate where the commit title is in "),_c('a',{attrs:{"href":"https://github.com/reposense/RepoSense/blob/master/frontend/src/views/c-zoom.vue"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("c-zoom.vue")])]),_v(".")])]),_v(" "),_c('panel',{scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_v("Hint 2")])]},proxy:true}])},[_v(" "),_c('p',[_v("You can check how tooltip is added for other icons in "),_c('a',{attrs:{"href":"https://github.com/reposense/RepoSense/blob/master/frontend/src/views/c-zoom.vue"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("c-zoom.vue")])]),_v(".")])]),_v(" "),_c('panel',{scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_v("Hint 3")])]},proxy:true}])},[_v(" "),_c('p',[_v("Check what "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("selectedCommits")]),_v(" does and how the link and commit title of each commit is retrieved.")])]),_v(" "),_c('panel',{scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_v("Suggested solution")])]},proxy:true}])},[_v(" "),_c('p',[_v("There is more than 1 way to achieve this. One solution is shown as the following:")]),_v(" "),_c('ol',[_c('li',[_v("In "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("c-zoom.vue")]),_v(", locate the section that iterates through each "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("day")]),_v(" in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("selectedCommits")]),_v(".")]),_v(" "),_c('li',[_v("The component that helps render the commit message title should be an "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("a")]),_v(" tag which uses the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("getSliceLink")]),_v(" method to set the link to the commit details and uses "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("slice.messageTitle")]),_v(" to show the commit message title.")]),_v(" "),_c('li',[_v("Wrap the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("a")]),_v(" tag in a new "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("tooltip")]),_v(".")]),_v(" "),_c('li',[_v("In the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("tooltip")]),_v(", add the following content to show the tooltip message.")])]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"hljs"}},[_c('span',[_v("span.tooltip-text Click to view the detailed file changes in the commit\n")])])])])],1),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("This is only for your practice. There is no need for you to commit this change and submit it in a pull request.")])]),_v(" "),_m(31),_v(" "),_m(32),_v(" "),_m(33),_v(" "),_m(34)],1)],1),_v(" "),_m(35)])} +with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"fixed":""}},[_c('navbar',{attrs:{"type":"dark"},scopedSlots:_u([{key:"brand",fn:function(){return [_c('a',{staticClass:"navbar-brand",attrs:{"href":"/index.html","title":"Home"}},[_c('img',{attrs:{"width":"30px","src":"/favicon.ico"}})])]},proxy:true},{key:"right",fn:function(){return [_c('li',[_c('form',{staticClass:"navbar-form"},[_c('searchbar',{attrs:{"data":searchData,"placeholder":"Search","on-hit":searchCallback,"menu-align-right":""}})],1)])]},proxy:true}])},[_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/index.html"}},[_v("HOME")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/showcase.html"}},[_v("SHOWCASE")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/ug/index.html"}},[_v("USER GUIDE")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/dg/index.html"}},[_v("DEVELOPER GUIDE")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/about.html"}},[_v("ABOUT")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/contact.html"}},[_v("CONTACT")])]),_v(" "),_c('li',{attrs:{"tags":"dev"}},[_c('a',{staticClass:"nav-link",attrs:{"href":"https://reposense.org","target":"_blank"}},[_c('span',[_c('span',{staticClass:"fas fa-external-link-alt",attrs:{"aria-hidden":"true"}}),_v(" PRODUCTION SITE")])])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"https://github.com/RepoSense/reposense","target":"_blank"}},[_c('span',[_c('span',{staticClass:"fab fa-github",attrs:{"aria-hidden":"true"}})])])])])],1),_v(" "),_c('div',{attrs:{"id":"flex-body"}},[_c('overlay-source',{staticClass:"fixed-header-padding",attrs:{"id":"site-nav","tag-name":"nav","to":"site-nav"}},[_c('div',{staticClass:"site-nav-top"},[_c('div',{staticClass:"font-weight-bold mb-2",staticStyle:{"font-size":"1.25rem"}},[_c('span',[_c('strong',[_c('strong',[_v("DEVELOPER GUIDE")])])])])]),_v(" "),_c('div',{staticClass:"nav-component slim-scroll"},[_c('div',[_c('site-nav',[_c('overlay-source',{staticClass:"site-nav-list site-nav-list-root",attrs:{"tag-name":"ul","to":"mb-site-nav"}},[_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/index.html"}},[_c('strong',[_v("Contributing")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/settingUp.html"}},[_c('strong',[_v("Setting up")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/learningBasics.html"}},[_c('strong',[_v("Learning the basics")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/workflow.html"}},[_c('strong',[_v("Workflow")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('strong',[_v("Design and implementation")]),_v(" "),_c('div',{staticClass:"site-nav-dropdown-btn-container"},[_c('i',{staticClass:"site-nav-dropdown-btn-icon site-nav-rotate-icon",attrs:{"onclick":"handleSiteNavClick(this.parentNode.parentNode, false); event.stopPropagation();"}},[_c('span',{staticClass:"glyphicon glyphicon-menu-down",attrs:{"aria-hidden":"true"}})])])]),_c('ul',{staticClass:"site-nav-dropdown-container site-nav-dropdown-container-open site-nav-list"},[_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/architecture.html"}},[_v("Architecture")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/report.html"}},[_v("HTML report")])])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/projectManagement.html"}},[_c('strong',[_v("Project management")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/devOpsGuide.html"}},[_c('strong',[_v("DevOps guide")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('strong',[_v("Appendices")]),_v(" "),_c('div',{staticClass:"site-nav-dropdown-btn-container"},[_c('i',{staticClass:"site-nav-dropdown-btn-icon site-nav-rotate-icon",attrs:{"onclick":"handleSiteNavClick(this.parentNode.parentNode, false); event.stopPropagation();"}},[_c('span',{staticClass:"glyphicon glyphicon-menu-down",attrs:{"aria-hidden":"true"}})])])]),_c('ul',{staticClass:"site-nav-dropdown-container site-nav-dropdown-container-open site-nav-list"},[_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/cli.html"}},[_v("CLI syntax reference")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/styleGuides.html"}},[_v("Style guides")])])])])])])],1)],1)])]),_v(" "),_c('div',{staticClass:"fixed-header-padding",attrs:{"id":"content-wrapper"}},[_m(0),_v(" "),_m(1),_v(" "),_c('box',{attrs:{"type":"warning","seamless":""}},[_c('p',[_v("Depending on what you know already and what you would like to work on (i.e., backend or frontend), you may find certain sections irrelevant to you and you can skip them accordingly.")])]),_v(" "),_m(2),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("This section is for developers who want to contribute to the backend of RepoSense. You may skip this section if you want to contribute as a pure frontend developer. Before you get started, you should have set up the project on your computer according to "),_c('a',{attrs:{"href":"/RepoSense/dg/settingUp.html"}},[_v("the "),_c('em',[_v("Setting up")]),_v(" page")]),_v(".")])]),_v(" "),_m(3),_v(" "),_m(4),_v(" "),_m(5),_v(" "),_m(6),_v(" "),_m(7),_v(" "),_m(8),_v(" "),_c('p',[_v("To gain a more concrete idea of how the backend works, you can use the IDE Debugger and run RepoSense under the debugging mode to trace through the steps of how arguments from command line and CSV files are parsed, how repositories are cloned and analyzed, and how the JSON files are generated.")]),_v(" "),_c('box',{attrs:{"type":"warning","seamless":""}},[_c('p',[_v("The information below is for "),_c('strong',[_v("Intellij")]),_v(". If you are using a different IDE, you may need to check the documentation of how to use the debugger separately.")])]),_v(" "),_m(9),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("When tracing through the program execution, you can cross reference the architecture diagram and Javadoc of the class and method to check your understanding of the procedure.")])]),_v(" "),_m(10),_v(" "),_c('p',[_v("Here are some small tasks for you to gain some basic knowledge of the code related to the RepoSense backend. You can do each in a separate branch in your local copy of the code.")]),_v(" "),_c('panel',{attrs:{"type":"primary"},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('strong',[_v("Task 1: Add a flag to pretty-print the JSON file")])])]},proxy:true}])},[_v(" "),_c('p',[_c('strong',[_v("Task 1: Add a flag to pretty-print the JSON file")])]),_v(" "),_c('ol',[_c('li',[_c('a',{attrs:{"href":"/RepoSense/ug/generatingReports.html#generating-reports-locally"}},[_v("Generate a report locally")]),_v(".")]),_v(" "),_c('li',[_v("Open a generated JSON file. For example, you can open "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("summary.json")]),_v(" of the generated report.")]),_v(" "),_c('li',[_v("You should see that the content in the JSON is compactly organized in 1 single line. This may affect readability for developer who wants to investigate the content in the JSON file.")])]),_v(" "),_c('p',[_c('strong',[_v("Your Task")])]),_v(" "),_c('p',[_v("Add a new CLI argument "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--use-json-pretty-printing")]),_v(", such that when a user runs the command "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar --repos LIST_OF_REPO_URLS --view --use-json-pretty-printing")]),_v(", the JSON files "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("summary.json")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("authorship.json")]),_v(", and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("commits.json")]),_v(" will be printed in a more readable way.")]),_v(" "),_c('panel',{scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_v("Hint 1")])]},proxy:true}])},[_v(" "),_c('p',[_v("Try to understand the parsing process of the Command Line Arguments, which starts from "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ArgsParser.parse(args)")]),_v(" in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("RepoSense.java")]),_v(" and uses "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ArgumentParser")]),_v(" to capture the arguments in the command string.")]),_v(" "),_c('p',[_v("Therefore, the first step you can take is to add the following to "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ArgsParser")]),_v(".")]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"hljs java"}},[_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-keyword"}},[_v("public")]),_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-keyword"}},[_v("static")]),_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-keyword"}},[_v("final")]),_v(" String[] JSON_PRINT_MODE_FLAGS = "),_c('span',{pre:true,attrs:{"class":"hljs-keyword"}},[_v("new")]),_v(" String[]{"),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"--use-json-pretty-printing\"")]),_v(", "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"-j\"")]),_v("};\n")])])]),_c('p',[_v("In "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("getArgumentParser")]),_v(" method, add the following content to make "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ArgumentParser")]),_v(" capture the new argument.")]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"hljs java"}},[_c('span',[_v("parser.addArgument(JSON_PRINT_MODE_FLAGS)\n")]),_c('span',[_v(" .dest(JSON_PRINT_MODE_FLAGS["),_c('span',{pre:true,attrs:{"class":"hljs-number"}},[_v("0")]),_v("])\n")]),_c('span',[_v(" .action(Arguments.storeTrue())\n")]),_c('span',[_v(" .help("),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"A flag to use json pretty printing when generating the json files.\"")]),_v(");\n")])])])]),_v(" "),_c('panel',{scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_v("Hint 2")])]},proxy:true}])},[_v(" "),_c('p',[_v("After the step in hint 1, the argument is captured by "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ArgumentParser")]),_v(". Now make corresponding changes to "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("CliArguments.java")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ConfigCliArguments.java")]),_v(", and the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("parse")]),_v(" method in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ArgsParser.java")]),_v(" to make the return result of "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("parse")]),_v(" include the new argument.")]),_v(" "),_c('ol',[_c('li',[_v("Add the following content to "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("CliArguments")]),_v(" to include "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("isPrettyPrintingUsed")]),_v(" as a new attribute to the class.")])]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"hljs java"}},[_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-keyword"}},[_v("protected")]),_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-keyword"}},[_v("boolean")]),_v(" isPrettyPrintingUsed;\n")]),_c('span',[_v("\n")]),_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-function"}},[_c('span',{pre:true,attrs:{"class":"hljs-keyword"}},[_v("public")]),_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-keyword"}},[_v("boolean")]),_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-title"}},[_v("isPrettyPrintingUsed")]),_c('span',{pre:true,attrs:{"class":"hljs-params"}},[_v("()")]),_v(" ")]),_v("{\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-keyword"}},[_v("return")]),_v(" isPrettyPrintingUsed;\n")]),_c('span',[_v("}\n")])])]),_c('ol',{attrs:{"start":"2"}},[_c('li',[_v("In the constructor of "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ConfigCliArguments")]),_v(", add "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("isPrettyPrintingUsed")]),_v(" as a new parameter of the method, and add the following instruction to the method body.")])]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"hljs java"}},[_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-keyword"}},[_v("this")]),_v(".isPrettyPrintingUsed = isPrettyPrintingUsed;\n")])])]),_c('ol',{attrs:{"start":"3"}},[_c('li',[_v("In the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("parse")]),_v(" method of "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ArgsParser")]),_v(", add the following instruction to get "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("isJsonPrettyPrintingUsed")]),_v(" from "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ArgmentParser")]),_v(".")])]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"hljs java"}},[_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-keyword"}},[_v("boolean")]),_v(" isJsonPrettyPrintingUsed = results.get(JSON_PRINT_MODE_FLAGS["),_c('span',{pre:true,attrs:{"class":"hljs-number"}},[_v("0")]),_v("]);\n")])])]),_c('ol',{attrs:{"start":"4"}},[_c('li',[_v("Additionally, change the return statement of the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("parse")]),_v(" method so that the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ConfigCliArguments")]),_v(" object returned will now include "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("isJsonPrettyPrintingUsed")]),_v(".")])])]),_v(" "),_c('panel',{scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_v("Hint 3")])]},proxy:true}])},[_v(" "),_c('p',[_v("After the steps in hint 1 and hint 2, the result returned from "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ArgsParser.parse(args)")]),_v(" in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("RepoSense.java")]),_v(" should be able to capture the new argument when it is specified in the command.")]),_v(" "),_c('p',[_v("The next step is to extract the argument from the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("CliArguments")]),_v(" object, and pass it to JSON file writer to notify it of the specified printing mode.")]),_v(" "),_c('p',[_v("Note that the creation and writing of JSON file is invoked in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ReportGenerator.generateReposReport")]),_v(", which calls "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("FileUtil.writeJsonFile")]),_v(" directly to write the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("summary.json")]),_v(" file or indirectly (Check "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("generateIndividualRepoReport")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("generateEmptyRepoReport")]),_v(") to write the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("commits.json")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("authorship.json")]),_v(" files of individual repositories.")]),_v(" "),_c('p',[_v("Therefore, the task now is to make "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("FileUtil.writeJsonFile")]),_v(" switch between different printing mode.")]),_v(" "),_c('ol',[_c('li',[_c('p',[_v("You can find out what "),_c('a',{attrs:{"href":"https://www.javadoc.io/doc/com.google.code.gson/gson/2.8.5/com/google/gson/GsonBuilder.html#setPrettyPrinting--"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Gson.setPrettyPrinting")])]),_v(" does and how it can be used in the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("writeJsonFile")]),_v(" method of "),_c('a',{attrs:{"href":"https://github.com/reposense/RepoSense/blob/master/src/main/java/reposense/util/FileUtil.java"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("FileUtil.java")])]),_v(".")])]),_v(" "),_c('li',[_c('p',[_v("Add the following content to "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("FileUtil")]),_v(".")])])]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"hljs java"}},[_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-keyword"}},[_v("private")]),_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-keyword"}},[_v("static")]),_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-keyword"}},[_v("boolean")]),_v(" isPrettyPrintingUsed = "),_c('span',{pre:true,attrs:{"class":"hljs-keyword"}},[_v("false")]),_v(";\n")])])]),_c('ol',{attrs:{"start":"3"}},[_c('li',[_v("In the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("writeJsonFile")]),_v(" method, Replace the creation of the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Gson")]),_v(" object with the following instructions.")])]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"hljs java"}},[_c('span',[_v("GsonBuilder gsonBuilder = "),_c('span',{pre:true,attrs:{"class":"hljs-keyword"}},[_v("new")]),_v(" GsonBuilder()\n")]),_c('span',[_v(" .registerTypeAdapter(LocalDateTime.class, (JsonSerializer) (date, typeOfSrc, context)\n")]),_c('span',[_v(" -> "),_c('span',{pre:true,attrs:{"class":"hljs-keyword"}},[_v("new")]),_v(" JsonPrimitive(date.format(DateTimeFormatter.ofPattern(GITHUB_API_DATE_FORMAT))))\n")]),_c('span',[_v(" .registerTypeAdapter(FileType.class, "),_c('span',{pre:true,attrs:{"class":"hljs-keyword"}},[_v("new")]),_v(" FileType.FileTypeSerializer());\n")]),_c('span',[_v("Gson gson;\n")]),_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-keyword"}},[_v("if")]),_v(" (isPrettyPrintingUsed) {\n")]),_c('span',[_v(" gson = gsonBuilder.setPrettyPrinting().create();\n")]),_c('span',[_v("} "),_c('span',{pre:true,attrs:{"class":"hljs-keyword"}},[_v("else")]),_v(" {\n")]),_c('span',[_v(" gson = gsonBuilder.create();\n")]),_c('span',[_v("}\n")])])]),_c('ol',{attrs:{"start":"4"}},[_c('li',[_v("To notify "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("FileUtil")]),_v(" of the switch between different printing mode, add the following method to "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("FileUtil")]),_v(".")])]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"hljs java"}},[_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-function"}},[_c('span',{pre:true,attrs:{"class":"hljs-keyword"}},[_v("public")]),_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-keyword"}},[_v("static")]),_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-keyword"}},[_v("void")]),_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-title"}},[_v("setPrettyPrintingMode")]),_c('span',{pre:true,attrs:{"class":"hljs-params"}},[_v("("),_c('span',{pre:true,attrs:{"class":"hljs-keyword"}},[_v("boolean")]),_v(" isPrettyPrintingAdopted)")]),_v(" ")]),_v("{\n")]),_c('span',[_v(" isPrettyPrintingUsed = isPrettyPrintingAdopted;\n")]),_c('span',[_v("}\n")])])]),_c('ol',{attrs:{"start":"5"}},[_c('li',[_v("It is now possible to notify "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("FileUtil")]),_v(" of the printing mode switch by extracting the argument from the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("CliArguments")]),_v(" object in the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("main")]),_v(" method of "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("RepoSense.java")]),_v(" and passing it to the corresponding method in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("FileUtil")]),_v(".")])]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"hljs java"}},[_c('span',[_v("FileUtil.setPrettyPrintingMode(cliArguments.isPrettyPrintingUsed());\n")])])]),_c('p',[_v("Now the parsing of argument and changing of printing mode should have been completed.")])]),_v(" "),_c('panel',{scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_v("Suggested solution")])]},proxy:true}])},[_v(" "),_c('p',[_v("There is more than 1 way to achieve this. By combining the changes in hint 1, hint 2, and hint 3, you should be able to get a possible solution.")]),_v(" "),_c('p',[_v("Try the command "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar --repos https://github.com/reposense/RepoSense.git --view --use-json-pretty-printing")]),_v(" and check the generated JSON files to see if it works.")])])],1),_v(" "),_c('panel',{attrs:{"type":"primary"},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('strong',[_v("Task 2: Add exception message during repository cloning to the summary view")])])]},proxy:true}])},[_v(" "),_c('p',[_c('strong',[_v("Task 2: Add exception message during repository cloning to the summary view")])]),_v(" "),_c('ol',[_c('li',[_v("Open a "),_c('a',{attrs:{"href":"https://dashboard-1507-pr-reposense-reposense.surge.sh/"}},[_v("report")]),_v(".")]),_v(" "),_c('li',[_v("You should see that there is a red panel in the summary view containing the following message, indicating that there is an issue in the cloning process of the repository "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("reposense/testrepo-Empty")]),_v(".")])]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"hljs"}},[_c('span',[_v("reposense/testrepo-Empty[master]\n")]),_c('span',[_v(" Failed to clone from https://github.com/reposense/testrepo-Empty.git\n")])])]),_c('p',[_c('strong',[_v("Your task")])]),_v(" "),_c('p',[_v("For the repository with the message "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Failed to clone from ...")]),_v(", find out what exception causes this cloning error, and add that exception message to the panel as well.")]),_v(" "),_c('panel',{scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_v("Hint 1")])]},proxy:true}])},[_v(" "),_c('p',[_v("You can find out what "),_c('a',{attrs:{"href":"https://github.com/reposense/RepoSense/blob/master/src/main/java/reposense/report/ErrorSummary.java"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ErrorSummary.java")])]),_v(" and "),_c('a',{attrs:{"href":"https://github.com/reposense/RepoSense/blob/master/src/main/java/reposense/report/RepoCloner.java"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("RepoCloner.java")])]),_v(" do, and where they are used.")])]),_v(" "),_c('panel',{scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_v("Hint 2")])]},proxy:true}])},[_v(" "),_c('p',[_v("Try to understand the cloning process.")]),_v(" "),_c('ul',[_c('li',[_v("The cloning process is invoked by "),_c('a',{attrs:{"href":"https://github.com/reposense/RepoSense/blob/master/src/main/java/reposense/report/ReportGenerator.java"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("RepoGenerator.java")])]),_v(" in the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("cloneAndAnalyzeRepos")]),_v(" method, which subsequently calls "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("cloneBare")]),_v(" in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("RepoCloner.java")]),_v(" to start the cloning.")]),_v(" "),_c('li',[_v("The "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("cloneAndAnalyzeRepos")]),_v(" method will then call "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("getRepoLocation")]),_v(" in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("RepoCloner.java")]),_v(" to try to get the repository location.")]),_v(" "),_c('li',[_v("Beneath the surface, "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("RepoCloner")]),_v(" will first execute "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("spawnCloneProcess")]),_v(" and then execute "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("waitForCloneProcess")]),_v(" when it is invoked by "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("RepoGenerator")]),_v(" for the first and second time respectively.")])])]),_v(" "),_c('panel',{scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_v("Hint 3")])]},proxy:true}])},[_v(" "),_c('p',[_v("In "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("RepoCloner")]),_v(", the potential exceptions in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("spawnCloneProcess")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("waitForCloneProcess")]),_v(" are caught but not recorded by "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ErrorSummary")]),_v(".")])]),_v(" "),_c('panel',{scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_v("Suggested solution")])]},proxy:true}])},[_v(" "),_c('p',[_v("There is more than 1 way to achieve this. One solution is shown as the following:")]),_v(" "),_c('p',[_v("Add this to the catch block of "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("spawnCloneProcess")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("waitForCloneProcess")]),_v(", so that the message will be captured in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("summary.json")]),_v(".")]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"hljs java"}},[_c('span',[_v("ErrorSummary.getInstance().addErrorMessage(config.getDisplayName(), e.getMessage());\n")])])])])],1),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("This is only for your practice. There is no need for you to commit this change and submit it in a pull request.")])]),_v(" "),_m(11),_v(" "),_m(12),_v(" "),_m(13),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("This section is for developers who want to contribute to the frontend of RepoSense. You may skip this section if you want to contribute as a pure backend developer.")])]),_v(" "),_m(14),_v(" "),_m(15),_v(" "),_c('p',[_v("It is necessary for you to learn the basics of Vue.js, Pug, and SCSS before working on the project.")]),_v(" "),_m(16),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Vue.js uses JavaScript as its programming language. Before learning "),_c('strong',[_v("Vue.js")]),_v(", you may need to first get yourself familiar with JavaScript syntax first.\nYou can refer to the "),_c('a',{attrs:{"href":"https://devdocs.io/javascript/"}},[_v("Javascript documentation")]),_v(" to learn the basic syntax. There are plenty of other resources available and please feel free to find the resource most suitable for you.")])]),_v(" "),_m(17),_v(" "),_m(18),_v(" "),_c('box',{attrs:{"type":"warning","seamless":""}},[_c('p',[_v("The guide above uses HTML as the component template, which is not the case with RepoSense. You may wish to learn more about "),_c('a',{attrs:{"href":"#pug"}},[_v("Pug")]),_v(" and its connection with HTML.")])]),_v(" "),_m(19),_v(" "),_m(20),_v(" "),_m(21),_v(" "),_m(22),_v(" "),_m(23),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Since Pug is used to generate the HTML template, it is recommended that you have a basic knowledge of HTML before starting to learn Pug. Once you understand how HTML works, you can proceed to focus on how Pug is translated into HTML.")])]),_v(" "),_m(24),_v(" "),_m(25),_v(" "),_m(26),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("It is recommended that you have a basic knowledge of CSS before starting to learn SCSS. Once you understand how CSS works, you can proceed to focus on how SCSS is translated into CSS.")])]),_v(" "),_m(27),_v(" "),_m(28),_v(" "),_m(29),_v(" "),_m(30),_v(" "),_c('p',[_v("Here are some small tasks for you to gain some basic knowledge of the code related to the RepoSense frontend. You can do each in a separate branch in your local copy of the code.")]),_v(" "),_c('panel',{attrs:{"type":"primary"},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('strong',[_v("Task 1: Highlight the selected author name in the summary view")])])]},proxy:true}])},[_v(" "),_c('p',[_c('strong',[_v("Task 1: Highlight the selected author name in the summary view")])]),_v(" "),_c('ol',[_c('li',[_v("Open a "),_c('a',{attrs:{"href":"https://dashboard-1507-pr-reposense-reposense.surge.sh/"}},[_v("report")]),_v(".")]),_v(" "),_c('li',[_v("Randomly open the authorship contribution panel of an author (The icon is "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("")]),_v(").")]),_v(" "),_c('li',[_v("You should see that, after you open the panel, the author title background on the chart panel becomes yellow, and the background of the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("")]),_v(" icon you clicked becomes green.")])]),_v(" "),_c('p',[_c('strong',[_v("Your Task")])]),_v(" "),_c('p',[_v("Make corresponding changes to "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("summary charts")]),_v(" so that in step 3, after opening the panel, the font colour of the author title (in the form of "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("authorDisplayName(authorName)")]),_v(") on the chart panel also becomes green.")]),_v(" "),_c('panel',{scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_v("Hint 1")])]},proxy:true}])},[_v(" "),_c('p',[_v("Try to locate where the author title is in "),_c('a',{attrs:{"href":"https://github.com/reposense/RepoSense/blob/master/frontend/src/components/c-summary-charts.vue"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("c-summary-charts.vue")])]),_v(".")])]),_v(" "),_c('panel',{scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_v("Hint 2")])]},proxy:true}])},[_v(" "),_c('p',[_v("You can check what "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("activeUser")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("activeRepo")]),_v(" do in "),_c('a',{attrs:{"href":"https://github.com/reposense/RepoSense/blob/master/frontend/src/components/c-summary-charts.vue"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("c-summary-charts.vue")])]),_v(".")])]),_v(" "),_c('panel',{scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_v("Hint 3")])]},proxy:true}])},[_v(" "),_c('p',[_v("Refer to how changes are made to the title background and icon background in "),_c('a',{attrs:{"href":"https://github.com/reposense/RepoSense/blob/master/frontend/src/components/c-summary-charts.vue"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("c-summary-charts.vue")])]),_v(".")])]),_v(" "),_c('panel',{scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_v("Hint 4")])]},proxy:true}])},[_v(" "),_c('p',[_v("Some of the CSS styling for "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("c-summary-charts.vue")]),_v(" is in "),_c('a',{attrs:{"href":"https://github.com/reposense/RepoSense/blob/master/frontend/src/styles/style.scss"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("style.scss")])]),_v(". You can add corresponding class selector if necessary.")])]),_v(" "),_c('panel',{scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_v("Suggested solution")])]},proxy:true}])},[_v(" "),_c('p',[_v("There is more than 1 way to achieve this. One solution is shown as the following:")]),_v(" "),_c('p',[_v("Add this to "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("c_summary.scss")]),_v(".")]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"hljs css"}},[_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-selector-class"}},[_v(".active-text")]),_v(" {\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attribute"}},[_v("color")]),_v(": "),_c('span',{pre:true,attrs:{"class":"hljs-built_in"}},[_v("mui-color")]),_v("("),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("'green'")]),_v(");\n")]),_c('span',[_v("}\n")])])]),_c('p',[_v("In "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("c-summary-charts.vue")]),_v(", locate "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("summary-chart__title--name")]),_v(", and add the following to its "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("v-bind:class")]),_v(" attribute map.")]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"hljs"}},[_c('span',[_v("'active-text': user.name === activeUser && user.repoName === activeRepo\n")])])])])],1),_v(" "),_c('panel',{attrs:{"type":"primary"},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('strong',[_v("Task 2: Add tooltip for file path in authorship panel")])])]},proxy:true}])},[_v(" "),_c('p',[_c('strong',[_v("Task 2: Add tooltip for file path in authorship panel")])]),_v(" "),_c('ol',[_c('li',[_v("Open a "),_c('a',{attrs:{"href":"https://dashboard-1507-pr-reposense-reposense.surge.sh/"}},[_v("report")]),_v(".")]),_v(" "),_c('li',[_v("Randomly open the authorship contribution panel of an author (The icon is "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("")]),_v(").")]),_v(" "),_c('li',[_v("Select a random file in the authorship contribution panel, and hover your mouse on an icon on the file title, a corresponding tooltip will show up, suggesting what the purpose of the icon is. However, when you hover the mouse over the file path on the file title, there is no tool tip shown, even if clicking the path itself will also trigger some event.")])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("For example, if you open the authorship contribution panel of an author in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("reposense/RepoSense[master]")]),_v(" and hover the mouse over the triangular icon beside the file path "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("src/main/java/reposense/model/Author.java")]),_v(", you should see a tooltip saying "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Click to hide file details")]),_v(" above the icon. However, when you hover the mouse over the file path "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("src/main/java/reposense/model/Author.java")]),_v(", there is no corresponding tooltip shown.")])]),_v(" "),_c('p',[_c('strong',[_v("Your Task")])]),_v(" "),_c('p',[_v("Make corresponding "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("authorship contribution panel")]),_v(" so that in step 3, when hovering your mouse over the file path:")]),_v(" "),_c('ul',[_c('li',[_v("A tip saying "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("This is the file path. Click to hide file details")]),_v(" will show up when the file details are shown")]),_v(" "),_c('li',[_v("A tip saying "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("This is the file path. Click to show file details")]),_v(" will show up when the file details are not shown.")])]),_v(" "),_c('panel',{scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_v("Hint 1")])]},proxy:true}])},[_v(" "),_c('p',[_v("Try to locate where the file title and the file path are in "),_c('a',{attrs:{"href":"https://github.com/reposense/RepoSense/blob/master/frontend/src/views/c-authorship.vue"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("c-authorship.vue")])]),_v(".")])]),_v(" "),_c('panel',{scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_v("Hint 2")])]},proxy:true}])},[_v(" "),_c('p',[_v("You can check how tooltip is added for the triangular icon in the file title in "),_c('a',{attrs:{"href":"https://github.com/reposense/RepoSense/blob/master/frontend/src/views/c-authorship.vue"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("c-authorship.vue")])]),_v(".")])]),_v(" "),_c('panel',{scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_v("Hint 3")])]},proxy:true}])},[_v(" "),_c('p',[_v("You can check what "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("file.active")]),_v(" does and how it is used to switch between different tooltip messages when hovering the mouse on the corresponding icon.")])]),_v(" "),_c('panel',{scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_v("Suggested solution")])]},proxy:true}])},[_v(" "),_c('p',[_v("There is more than 1 way to achieve this. One solution is shown as the following:")]),_v(" "),_c('ol',[_c('li',[_v("In "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("c-authorship.vue")]),_v(", locate the section that iterates through each file in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("selectedFiles")]),_v(".")]),_v(" "),_c('li',[_v("There is a specific portion of the section that renders the toggle icon, the file index, and the file path of the file title.")]),_v(" "),_c('li',[_v("Try to locate the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("span")]),_v(" tag that renders "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("file.path")]),_v(", and wraps it inside a new "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("tooptip")]),_v(".")]),_v(" "),_c('li',[_v("In the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("tooltip")]),_v(", use the following instructions to handle the switch of tooltip message.")])]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"hljs"}},[_c('span',[_v("span.tooltip-text(v-show=\"file.active\") This is the file path. Click to hide file details\n")]),_c('span',[_v("span.tooltip-text(v-show=\"!file.active\") This is the file path. Click to show file details\n")])])])])],1),_v(" "),_c('panel',{attrs:{"type":"primary"},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('strong',[_v("Task 3: Add tooltip for commit message title in zoom panel")])])]},proxy:true}])},[_v(" "),_c('p',[_c('strong',[_v("Task 3: Add tooltip for commit message title in zoom panel")])]),_v(" "),_c('ol',[_c('li',[_v("Open a "),_c('a',{attrs:{"href":"https://dashboard-1507-pr-reposense-reposense.surge.sh/"}},[_v("report")]),_v(".")]),_v(" "),_c('li',[_v("Randomly open the commits panel of an author.")]),_v(" "),_c('li',[_v("Select a random commit in the commits panel, and hover your mouse on the icons on the commit title, there is no tooltip shown saying that it will redirect you to a different site.")])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("For example, given the "),_c('a',{attrs:{"href":"https://dashboard-1507-pr-reposense-reposense.surge.sh/?search=&sort=groupTitle&sortWithin=title&since=&timeframe=commit&mergegroup=&groupSelect=groupByRepos&breakdown=false&tabOpen=true&tabType=zoom&zA=eugenepeh&zR=reposense%2FRepoSense%5Bmaster%5D&zACS=99.28792569659443&zS=2017-10-09&zFS=&zU=2021-04-04&zMG=undefined&zFTF=commit&zFGS=groupByRepos&zFR=false"}},[_v("report")]),_v(", if you hover the mouse over the commit title "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("README: add acknowledgements section (#978)")]),_v(", there is no corresponding tooltip shown, but when you click on the commit title, you will be redirected to a different site to see the commit details.")])]),_v(" "),_c('p',[_c('strong',[_v("Your Task")])]),_v(" "),_c('p',[_v("Make corresponding changes to "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("zoom panel")]),_v(" so that in step 3, when hovering your mouse over the commit title, a tooltip saying "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Click to view the detailed file changes in the commit")]),_v(" will show up on the commit title.")]),_v(" "),_c('panel',{scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_v("Hint 1")])]},proxy:true}])},[_v(" "),_c('p',[_v("Try to locate where the commit title is in "),_c('a',{attrs:{"href":"https://github.com/reposense/RepoSense/blob/master/frontend/src/views/c-zoom.vue"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("c-zoom.vue")])]),_v(".")])]),_v(" "),_c('panel',{scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_v("Hint 2")])]},proxy:true}])},[_v(" "),_c('p',[_v("You can check how tooltip is added for other icons in "),_c('a',{attrs:{"href":"https://github.com/reposense/RepoSense/blob/master/frontend/src/views/c-zoom.vue"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("c-zoom.vue")])]),_v(".")])]),_v(" "),_c('panel',{scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_v("Hint 3")])]},proxy:true}])},[_v(" "),_c('p',[_v("Check what "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("selectedCommits")]),_v(" does and how the link and commit title of each commit is retrieved.")])]),_v(" "),_c('panel',{scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_v("Suggested solution")])]},proxy:true}])},[_v(" "),_c('p',[_v("There is more than 1 way to achieve this. One solution is shown as the following:")]),_v(" "),_c('ol',[_c('li',[_v("In "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("c-zoom.vue")]),_v(", locate the section that iterates through each "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("day")]),_v(" in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("selectedCommits")]),_v(".")]),_v(" "),_c('li',[_v("The component that helps render the commit message title should be an "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("a")]),_v(" tag which uses the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("getSliceLink")]),_v(" method to set the link to the commit details and uses "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("slice.messageTitle")]),_v(" to show the commit message title.")]),_v(" "),_c('li',[_v("Wrap the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("a")]),_v(" tag in a new "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("tooltip")]),_v(".")]),_v(" "),_c('li',[_v("In the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("tooltip")]),_v(", add the following content to show the tooltip message.")])]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"hljs"}},[_c('span',[_v("span.tooltip-text Click to view the detailed file changes in the commit\n")])])])])],1),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("This is only for your practice. There is no need for you to commit this change and submit it in a pull request.")])]),_v(" "),_m(31),_v(" "),_m(32),_v(" "),_m(33),_v(" "),_m(34)],1),_v(" "),_c('overlay-source',{staticClass:"fixed-header-padding",attrs:{"id":"page-nav","tag-name":"nav","to":"page-nav"}},[_c('div',{staticClass:"nav-component slim-scroll"},[_c('overlay-source',{staticClass:"nav nav-pills flex-column my-0 small no-flex-wrap",attrs:{"id":"mb-page-nav","tag-name":"nav","to":"mb-page-nav"}},[_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#learning-the-basics"}},[_v("Learning the Basics‎")]),_v(" "),_c('nav',{staticClass:"nav nav-pills flex-column my-0 nested no-flex-wrap"},[_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#backend"}},[_v("Backend‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#frontend"}},[_v("Frontend‎")]),_v(" "),_c('nav',{staticClass:"nav nav-pills flex-column my-0 nested no-flex-wrap"},[_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#vue-js"}},[_v("Vue.js‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#pug"}},[_v("Pug‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#scss"}},[_v("Scss‎")])]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#devops"}},[_v("DevOps‎")])])])],1)])],1),_v(" "),_m(35)])} }; var pageVueStaticRenderFns = [function anonymous( ) { @@ -110,6 +110,6 @@ with(this){return _c('h2',{attrs:{"id":"devops"}},[_v("DevOps"),_c('a',{staticCl with(this){return _c('p',[_v("If you want to understand and contribute to the DevOps aspect of RepoSense, you can refer to the "),_c('a',{attrs:{"href":"/RepoSense/dg/devOpsGuide.html"}},[_v("DevOps guide")]),_v(" for more information.")])} },function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('small',[_v("["),_c('span',[_c('strong',[_v("Powered by")])]),_v(" "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"30"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.2")]),_v(", generated on Tue, 14 May 2024, 13:12:51 UTC]")])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('small',[_v("["),_c('span',[_c('strong',[_v("Powered by")])]),_v(" "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"30"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.2")]),_v(", generated on Thu, 16 May 2024, 22:31:25 UTC]")])])])} }]; \ No newline at end of file diff --git a/dg/projectManagement.html b/dg/projectManagement.html index 54d3b0744c..25b2f115f3 100644 --- a/dg/projectManagement.html +++ b/dg/projectManagement.html @@ -11,13 +11,13 @@ - +

    Project management

    This page contains information about project management tasks. The target audience is senior developers (and above).

    Merging PRs

    • Use the 'squash and merge' option unless the situation warrants a different option.
    • For the merge commit, follow conventions at GitHub conventions @SE-EDU.

    Making a release on GitHub

    Before making a release, please check the following prerequisites:

    • Ensure that you have JDK 11 installed (Not other major release versions such as JDK 12 or JDK 13).
    • Ensure that the JAVA_HOME environment variable is correctly set to your JDK installation directory. You can refer to the JDK Installation Guide.
    • Ensure that you have merged the upstream master branch into both the local and upstream release branch according to the following steps:
      1. In your local repository, reset your master branch to be exactly the same as the upstream master branch.
      2. Switch to the local release branch, and merge the master branch into it with git merge master --no-ff (no fast forward to keep the commit history for releases).
      3. Push the local release branch directly to the upstream release branch (make sure you have the push access).

    To make a release for RepoSense on GitHub, please follow the Creating a release section in the GitHub Docs.

    Take note of the following when making the release according to the above guide:

    • When entering a release version number, use semantic versioning with some small tweaks:
      • Use MAJOR.MINOR as the version number when the release includes new features and/or major changes.
      • Use MAJOR.MINOR.PATCH as the version number when the release only includes bug fixes and/or minor changes.
      • Append rc to the version number to indicate that the release is a pre-release that is not ready to be used in production.
    • Enter the release title as RepoSense vxxx where xxx is the version number. Enter the release description by referring to the previous RepoSense releases.
    • Before launching the release, generate the RepoSense.jar file and attach it to the release. -
      1. Switch to the release branch.
      2. In the terminal, change the directory to the project root directory.
      3. Run gradlew --version to check that the JDK version is 11.
      4. Run gradlew shadowJar, and the Jar file will be generated at {buildDir}/jar/.
      5. Check that the Jar file is working. You may need to check that the report can be generated from the Jar file both locally and remotely by following the Generating Reports Guide.

    After making the release, please also remember to deploy the production website using the deploy guide.

    Deploying the production website

    We have two versions of the website:

    1. Production website at https://reposense.org
      • matches the latest released version
      • deployed manually after each new release
    2. Dev website at https://reposense.org/RepoSense
      • matches the latest master branch
      • deployed automatically by Travis whenever the master branch is updated

    The production website differs from the dev website in some ways, e.g.,

    • It has a CNAME file (to indicate that it is the target destination for the reposense.org domain name)
    • Its DG pages show a warning that it is not the latest version of the DG.

    MarkBind mainly manages these variations via the site.config file. That is why the site.config file in the release branch is slightly different from the one in the master branch.

    After each release, do the following steps to deploy the production website:

    1. Switch to the release branch
    2. cd docs
    3. markbind build
    4. markbind deploy (make sure you have the push access to https://github.com/reposense/reposense.github.io)
    5. After a few minutes, check https://reposense.org to ensure it has been updated as intended.

    Hot patching after the release

    If critical bugs are found in the release, take the following steps to hot patch it:

    1. Switch to the release branch.
    2. Implement the fixes, commit them, and create a pull request from your forked release branch to the upstream release branch.
    3. After merging, release a new version of RepoSense with the release branch according to the above guide.
    4. Merge the release branch back into the master branch by creating a separate pull request.
    [Powered by MarkBind 5.5.2, generated on Tue, 14 May 2024, 13:12:51 UTC]
    +
    1. Switch to the release branch.
    2. In the terminal, change the directory to the project root directory.
    3. Run gradlew --version to check that the JDK version is 11.
    4. Run gradlew shadowJar, and the Jar file will be generated at {buildDir}/jar/.
    5. Check that the Jar file is working. You may need to check that the report can be generated from the Jar file both locally and remotely by following the Generating Reports Guide.

    After making the release, please also remember to deploy the production website using the deploy guide.

    Deploying the production website

    We have two versions of the website:

    1. Production website at https://reposense.org
      • matches the latest released version
      • deployed manually after each new release
    2. Dev website at https://reposense.org/RepoSense
      • matches the latest master branch
      • deployed automatically by Travis whenever the master branch is updated

    The production website differs from the dev website in some ways, e.g.,

    MarkBind mainly manages these variations via the site.config file. That is why the site.config file in the release branch is slightly different from the one in the master branch.

    After each release, do the following steps to deploy the production website:

    1. Switch to the release branch
    2. cd docs
    3. markbind build
    4. markbind deploy (make sure you have the push access to https://github.com/reposense/reposense.github.io)
    5. After a few minutes, check https://reposense.org to ensure it has been updated as intended.

    Hot patching after the release

    If critical bugs are found in the release, take the following steps to hot patch it:

    1. Switch to the release branch.
    2. Implement the fixes, commit them, and create a pull request from your forked release branch to the upstream release branch.
    3. After merging, release a new version of RepoSense with the release branch according to the above guide.
    4. Merge the release branch back into the master branch by creating a separate pull request.
    [Powered by MarkBind 5.5.2, generated on Thu, 16 May 2024, 22:31:25 UTC]
    diff --git a/dg/projectManagement.page-vue-render.js b/dg/projectManagement.page-vue-render.js index a6ddfeabd1..e707ea4f4c 100644 --- a/dg/projectManagement.page-vue-render.js +++ b/dg/projectManagement.page-vue-render.js @@ -1,13 +1,13 @@ var pageVueRenderFn = function anonymous( ) { -with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"fixed":""}},[_c('navbar',{attrs:{"type":"dark"},scopedSlots:_u([{key:"brand",fn:function(){return [_c('a',{staticClass:"navbar-brand",attrs:{"href":"/index.html","title":"Home"}},[_c('img',{attrs:{"width":"30px","src":"/favicon.ico"}})])]},proxy:true},{key:"right",fn:function(){return [_c('li',[_c('form',{staticClass:"navbar-form"},[_c('searchbar',{attrs:{"data":searchData,"placeholder":"Search","on-hit":searchCallback,"menu-align-right":""}})],1)])]},proxy:true}])},[_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/index.html"}},[_v("HOME")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/showcase.html"}},[_v("SHOWCASE")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/ug/index.html"}},[_v("USER GUIDE")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/dg/index.html"}},[_v("DEVELOPER GUIDE")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/about.html"}},[_v("ABOUT")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/contact.html"}},[_v("CONTACT")])]),_v(" "),_c('li',{attrs:{"tags":"dev"}},[_c('a',{staticClass:"nav-link",attrs:{"href":"https://reposense.org","target":"_blank"}},[_c('span',[_c('span',{staticClass:"fas fa-external-link-alt",attrs:{"aria-hidden":"true"}}),_v(" PRODUCTION SITE")])])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"https://github.com/RepoSense/reposense","target":"_blank"}},[_c('span',[_c('span',{staticClass:"fab fa-github",attrs:{"aria-hidden":"true"}})])])])])],1),_v(" "),_c('div',{attrs:{"id":"flex-body"}},[_c('overlay-source',{staticClass:"fixed-header-padding",attrs:{"id":"site-nav","tag-name":"nav","to":"site-nav"}},[_c('div',{staticClass:"site-nav-top"},[_c('div',{staticClass:"font-weight-bold mb-2",staticStyle:{"font-size":"1.25rem"}},[_c('span',[_c('strong',[_c('strong',[_v("DEVELOPER GUIDE")])])])])]),_v(" "),_c('div',{staticClass:"nav-component slim-scroll"},[_c('div',[_c('site-nav',[_c('overlay-source',{staticClass:"site-nav-list site-nav-list-root",attrs:{"tag-name":"ul","to":"mb-site-nav"}},[_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/index.html"}},[_c('strong',[_v("Contributing")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/settingUp.html"}},[_c('strong',[_v("Setting up")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/learningBasics.html"}},[_c('strong',[_v("Learning the basics")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/workflow.html"}},[_c('strong',[_v("Workflow")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('strong',[_v("Design and implementation")]),_v(" "),_c('div',{staticClass:"site-nav-dropdown-btn-container"},[_c('i',{staticClass:"site-nav-dropdown-btn-icon site-nav-rotate-icon",attrs:{"onclick":"handleSiteNavClick(this.parentNode.parentNode, false); event.stopPropagation();"}},[_c('span',{staticClass:"glyphicon glyphicon-menu-down",attrs:{"aria-hidden":"true"}})])])]),_c('ul',{staticClass:"site-nav-dropdown-container site-nav-dropdown-container-open site-nav-list"},[_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/architecture.html"}},[_v("Architecture")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/report.html"}},[_v("HTML report")])])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/projectManagement.html"}},[_c('strong',[_v("Project management")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/devOpsGuide.html"}},[_c('strong',[_v("DevOps guide")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('strong',[_v("Appendices")]),_v(" "),_c('div',{staticClass:"site-nav-dropdown-btn-container"},[_c('i',{staticClass:"site-nav-dropdown-btn-icon site-nav-rotate-icon",attrs:{"onclick":"handleSiteNavClick(this.parentNode.parentNode, false); event.stopPropagation();"}},[_c('span',{staticClass:"glyphicon glyphicon-menu-down",attrs:{"aria-hidden":"true"}})])])]),_c('ul',{staticClass:"site-nav-dropdown-container site-nav-dropdown-container-open site-nav-list"},[_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/cli.html"}},[_v("CLI syntax reference")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/styleGuides.html"}},[_v("Style guides")])])])])])])],1)],1)])]),_v(" "),_m(0)],1),_v(" "),_m(1)])} +with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"fixed":""}},[_c('navbar',{attrs:{"type":"dark"},scopedSlots:_u([{key:"brand",fn:function(){return [_c('a',{staticClass:"navbar-brand",attrs:{"href":"/index.html","title":"Home"}},[_c('img',{attrs:{"width":"30px","src":"/favicon.ico"}})])]},proxy:true},{key:"right",fn:function(){return [_c('li',[_c('form',{staticClass:"navbar-form"},[_c('searchbar',{attrs:{"data":searchData,"placeholder":"Search","on-hit":searchCallback,"menu-align-right":""}})],1)])]},proxy:true}])},[_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/index.html"}},[_v("HOME")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/showcase.html"}},[_v("SHOWCASE")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/ug/index.html"}},[_v("USER GUIDE")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/dg/index.html"}},[_v("DEVELOPER GUIDE")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/about.html"}},[_v("ABOUT")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/contact.html"}},[_v("CONTACT")])]),_v(" "),_c('li',{attrs:{"tags":"dev"}},[_c('a',{staticClass:"nav-link",attrs:{"href":"https://reposense.org","target":"_blank"}},[_c('span',[_c('span',{staticClass:"fas fa-external-link-alt",attrs:{"aria-hidden":"true"}}),_v(" PRODUCTION SITE")])])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"https://github.com/RepoSense/reposense","target":"_blank"}},[_c('span',[_c('span',{staticClass:"fab fa-github",attrs:{"aria-hidden":"true"}})])])])])],1),_v(" "),_c('div',{attrs:{"id":"flex-body"}},[_c('overlay-source',{staticClass:"fixed-header-padding",attrs:{"id":"site-nav","tag-name":"nav","to":"site-nav"}},[_c('div',{staticClass:"site-nav-top"},[_c('div',{staticClass:"font-weight-bold mb-2",staticStyle:{"font-size":"1.25rem"}},[_c('span',[_c('strong',[_c('strong',[_v("DEVELOPER GUIDE")])])])])]),_v(" "),_c('div',{staticClass:"nav-component slim-scroll"},[_c('div',[_c('site-nav',[_c('overlay-source',{staticClass:"site-nav-list site-nav-list-root",attrs:{"tag-name":"ul","to":"mb-site-nav"}},[_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/index.html"}},[_c('strong',[_v("Contributing")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/settingUp.html"}},[_c('strong',[_v("Setting up")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/learningBasics.html"}},[_c('strong',[_v("Learning the basics")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/workflow.html"}},[_c('strong',[_v("Workflow")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('strong',[_v("Design and implementation")]),_v(" "),_c('div',{staticClass:"site-nav-dropdown-btn-container"},[_c('i',{staticClass:"site-nav-dropdown-btn-icon site-nav-rotate-icon",attrs:{"onclick":"handleSiteNavClick(this.parentNode.parentNode, false); event.stopPropagation();"}},[_c('span',{staticClass:"glyphicon glyphicon-menu-down",attrs:{"aria-hidden":"true"}})])])]),_c('ul',{staticClass:"site-nav-dropdown-container site-nav-dropdown-container-open site-nav-list"},[_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/architecture.html"}},[_v("Architecture")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/report.html"}},[_v("HTML report")])])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/projectManagement.html"}},[_c('strong',[_v("Project management")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/devOpsGuide.html"}},[_c('strong',[_v("DevOps guide")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('strong',[_v("Appendices")]),_v(" "),_c('div',{staticClass:"site-nav-dropdown-btn-container"},[_c('i',{staticClass:"site-nav-dropdown-btn-icon site-nav-rotate-icon",attrs:{"onclick":"handleSiteNavClick(this.parentNode.parentNode, false); event.stopPropagation();"}},[_c('span',{staticClass:"glyphicon glyphicon-menu-down",attrs:{"aria-hidden":"true"}})])])]),_c('ul',{staticClass:"site-nav-dropdown-container site-nav-dropdown-container-open site-nav-list"},[_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/cli.html"}},[_v("CLI syntax reference")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/styleGuides.html"}},[_v("Style guides")])])])])])])],1)],1)])]),_v(" "),_m(0),_v(" "),_c('overlay-source',{staticClass:"fixed-header-padding",attrs:{"id":"page-nav","tag-name":"nav","to":"page-nav"}},[_c('div',{staticClass:"nav-component slim-scroll"},[_c('overlay-source',{staticClass:"nav nav-pills flex-column my-0 small no-flex-wrap",attrs:{"id":"mb-page-nav","tag-name":"nav","to":"mb-page-nav"}},[_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#project-management"}},[_v("Project management‎")]),_v(" "),_c('nav',{staticClass:"nav nav-pills flex-column my-0 nested no-flex-wrap"},[_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#merging-prs"}},[_v("Merging PRs‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#making-a-release-on-github"}},[_v("Making a release on GitHub‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#deploying-the-production-website"}},[_v("Deploying the production website‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#hot-patching-after-the-release"}},[_v("Hot patching after the release‎")])])])],1)])],1),_v(" "),_m(1)])} }; var pageVueStaticRenderFns = [function anonymous( ) { with(this){return _c('div',{staticClass:"fixed-header-padding",attrs:{"id":"content-wrapper"}},[_c('h1',{staticClass:"display-4",attrs:{"id":"project-management"}},[_c('span',[_v("Project management")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#project-management","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{staticClass:"lead"},[_c('p',[_v("This page contains information about project management tasks. The target audience is senior developers (and above).")])]),_v(" "),_c('h2',{attrs:{"id":"merging-prs"}},[_v("Merging PRs"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#merging-prs","onclick":"event.stopPropagation()"}})]),_v(" "),_c('ul',[_c('li',[_c('strong',[_v("Use the 'squash and merge' option")]),_v(" unless the situation warrants a different option.")]),_v(" "),_c('li',[_c('strong',[_v("For the merge commit")]),_v(", follow conventions at "),_c('a',{attrs:{"href":"https://se-education.org/guides/conventions/github.html"}},[_c('em',[_v("GitHub conventions")]),_v(" @SE-EDU")]),_v(".")])]),_v(" "),_c('h2',{attrs:{"id":"making-a-release-on-github"}},[_v("Making a release on GitHub"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#making-a-release-on-github","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Before making a release, please check the following prerequisites:")]),_v(" "),_c('ul',[_c('li',[_v("Ensure that you have "),_c('strong',[_v("JDK "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("11")])]),_v(" installed ("),_c('mark',[_v("Not other major release versions such as "),_c('strong',[_v("JDK "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("12")])]),_v(" or "),_c('strong',[_v("JDK "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("13")])])]),_v(").")]),_v(" "),_c('li',[_v("Ensure that the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("JAVA_HOME")]),_v(" environment variable is correctly set to your JDK installation directory. You can refer to the "),_c('a',{attrs:{"href":"https://docs.oracle.com/cd/E19182-01/821-0917/inst_jdk_javahome_t/index.html"}},[_v("JDK Installation Guide")]),_v(".")]),_v(" "),_c('li',[_v("Ensure that you have merged the "),_c('a',{attrs:{"href":"https://github.com/RepoSense/reposense"}},[_v("upstream")]),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("master")]),_v(" branch into both the local and upstream "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("release")]),_v(" branch according to the following steps:\n"),_c('ol',[_c('li',[_v("In your local repository, reset your "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("master")]),_v(" branch to be exactly the same as the upstream "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("master")]),_v(" branch.")]),_v(" "),_c('li',[_v("Switch to the local "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("release")]),_v(" branch, and merge the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("master")]),_v(" branch into it with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("git merge master --no-ff")]),_v(" (no fast forward to keep the commit history for releases).")]),_v(" "),_c('li',[_v("Push the local "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("release")]),_v(" branch directly to the "),_c('a',{attrs:{"href":"https://github.com/reposense/RepoSense/tree/release"}},[_v("upstream "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("release")]),_v(" branch")]),_v(" (make sure you have the push access).")])])])]),_v(" "),_c('p',[_v("To make a release for RepoSense on GitHub, please follow the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Creating a release")]),_v(" section in the "),_c('a',{attrs:{"href":"https://docs.github.com/en/github/administering-a-repository/managing-releases-in-a-repository"}},[_v("GitHub Docs")]),_v("."),_c('br')]),_v(" "),_c('p',[_v("Take note of the following when making the release according to the above guide:")]),_v(" "),_c('ul',[_c('li',[_v("When entering a release version number, use semantic versioning with some small tweaks:\n"),_c('ul',[_c('li',[_v("Use "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("MAJOR.MINOR")]),_v(" as the version number when the release includes new features and/or major changes.")]),_v(" "),_c('li',[_v("Use "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("MAJOR.MINOR.PATCH")]),_v(" as the version number when the release only includes bug fixes and/or minor changes.")]),_v(" "),_c('li',[_v("Append "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("rc")]),_v(" to the version number to indicate that the release is a pre-release that is not ready to be used in production.")])])]),_v(" "),_c('li',[_v("Enter the release title as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("RepoSense vxxx")]),_v(" where "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("xxx")]),_v(" is the version number. Enter the release description by referring to the previous "),_c('a',{attrs:{"href":"https://github.com/reposense/RepoSense/releases"}},[_v("RepoSense releases")]),_v(".")]),_v(" "),_c('li',[_v("Before launching the release, generate the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("RepoSense.jar")]),_v(" file and attach it to the release.\n"),_c('ol',[_c('li',[_v("Switch to the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("release")]),_v(" branch.")]),_v(" "),_c('li',[_v("In the terminal, change the directory to the project root directory.")]),_v(" "),_c('li',[_v("Run "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("gradlew --version")]),_v(" to check that the JDK version is 11.")]),_v(" "),_c('li',[_v("Run "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("gradlew shadowJar")]),_v(", and the Jar file will be generated at "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("{buildDir}/jar/")]),_v(".")]),_v(" "),_c('li',[_v("Check that the Jar file is working. You may need to check that the report can be generated from the Jar file both locally and remotely by following the "),_c('a',{attrs:{"href":"/RepoSense/ug/generatingReports.html"}},[_v("Generating Reports Guide")]),_v(".")])])])]),_v(" "),_c('p',[_v("After making the release, please also remember to deploy the production website using the "),_c('a',{attrs:{"href":"#deploying-the-production-website"}},[_v("deploy guide")]),_v(".")]),_v(" "),_c('h2',{attrs:{"id":"deploying-the-production-website"}},[_v("Deploying the production website"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#deploying-the-production-website","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("We have two versions of the website:")]),_v(" "),_c('ol',[_c('li',[_c('strong',[_v("Production website")]),_v(" at "),_c('a',{attrs:{"href":"https://reposense.org"}},[_v("https://reposense.org")]),_v(" "),_c('ul',[_c('li',[_v("matches the latest released version")]),_v(" "),_c('li',[_v("deployed manually after each new release")])])]),_v(" "),_c('li',[_c('strong',[_v("Dev website")]),_v(" at "),_c('a',{attrs:{"href":"https://reposense.org/RepoSense"}},[_v("https://reposense.org/RepoSense")]),_v(" "),_c('ul',[_c('li',[_v("matches the latest "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("master")]),_v(" branch")]),_v(" "),_c('li',[_v("deployed automatically by Travis whenever the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("master")]),_v(" branch is updated")])])])]),_v(" "),_c('p',[_v("The production website differs from the dev website in some ways, e.g.,")]),_v(" "),_c('ul',[_c('li',[_v("It has a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("CNAME")]),_v(" file (to indicate that it is the target destination for the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("reposense.org")]),_v(" domain name)")]),_v(" "),_c('li',[_v("Its DG pages show a warning that it is not the latest version of the DG.")])]),_v(" "),_c('p',[_v("MarkBind mainly manages these variations via the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("site.config")]),_v(" file. That is why the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("site.config")]),_v(" file in the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("release")]),_v(" branch is slightly different from the one in the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("master")]),_v(" branch.")]),_v(" "),_c('p',[_v("After each release, do the following steps to deploy the production website:")]),_v(" "),_c('ol',[_c('li',[_v("Switch to the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("release")]),_v(" branch")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("cd docs")])]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("markbind build")])]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("markbind deploy")]),_v(" (make sure you have the push access to "),_c('a',{attrs:{"href":"https://github.com/reposense/reposense.github.io"}},[_v("https://github.com/reposense/reposense.github.io")]),_v(")")]),_v(" "),_c('li',[_v("After a few minutes, check "),_c('a',{attrs:{"href":"https://reposense.org"}},[_v("https://reposense.org")]),_v(" to ensure it has been updated as intended.")])]),_v(" "),_c('h2',{attrs:{"id":"hot-patching-after-the-release"}},[_v("Hot patching after the release"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#hot-patching-after-the-release","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("If critical bugs are found in the release, take the following steps to hot patch it:")]),_v(" "),_c('ol',[_c('li',[_v("Switch to the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("release")]),_v(" branch.")]),_v(" "),_c('li',[_v("Implement the fixes, commit them, and create a pull request from your forked "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("release")]),_v(" branch to the upstream "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("release")]),_v(" branch.")]),_v(" "),_c('li',[_v("After merging, release a new version of RepoSense with the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("release")]),_v(" branch according to the above guide.")]),_v(" "),_c('li',[_v("Merge the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("release")]),_v(" branch back into the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("master")]),_v(" branch by creating a separate pull request.")])])])} },function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('small',[_v("["),_c('span',[_c('strong',[_v("Powered by")])]),_v(" "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"30"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.2")]),_v(", generated on Tue, 14 May 2024, 13:12:51 UTC]")])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('small',[_v("["),_c('span',[_c('strong',[_v("Powered by")])]),_v(" "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"30"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.2")]),_v(", generated on Thu, 16 May 2024, 22:31:25 UTC]")])])])} }]; \ No newline at end of file diff --git a/dg/report.html b/dg/report.html index 3cc6796318..1b3140d6bd 100644 --- a/dg/report.html +++ b/dg/report.html @@ -11,13 +11,13 @@ - +

    HTML report

    The report's source files are located in frontend/src and are built by vue-cli before being packaged into the JAR file to be extracted as part of the report.

    Vue (pronounced /vjuː/, like view) is a progressive framework for building user interfaces. It is heavily utilized in the report to update the information in the various views dynamically. (Style guide available here, Developer tool available here). Vue lifecycle hooks are the defined methods that get executed in a particular stage of the Vue object lifespan. The following is the Vue lifecycle diagram taken from here indicating the hook sequence: vue lifecycle diagram

    The following is a snapshot of the report: report screenshot

    Report architecture

    The main Vue object (app.vue) is responsible for loading the report via an async call to api.ts, which parses summary.json. Its repos attribute is tied to the global window.REPOS, and is passed into the various other modules when the information is needed.

    The report interface is broken down into two main parts

    • the summary view
    • and the tabbed interface

    The summary view acts as the main report, which shows the various calculations.
    -The tabbed interface is responsible for loading various modules such as authorship and zoom to display additional information.

    Typescript and Vue files

    • main.ts - sets up plugins and 3rd party components used in the report
    • app.vue - module that renders the router-view
    • api.ts - loading and parsing of the report content
    • c-home.vue - module that supports the report interface
    • c-widget.vue - module that supports the widget interface
    • c-summary.vue - module that supports the summary view
    • c-authorship.vue - module that supports the authorship tab view
    • c-zoom.vue - module that supports the zoom tab view
    • c-ramp.vue - module that supports the ramp chart view
    • c-segment.vue - module that supports the code segment view

    JSON report files

    • summary.json - a list of all the repositories and their respective details
    • projName/commits.json - contains information of the users' commits information (e.g., line deletion, insertion, etc.), grouped by date
    • projName/authorship.json - contains information from git blame, detailing the author of each line for all the processed files

    App (app.vue)

    This contains the logic for the main VueJS object, app.vue, which is the entry point for the web application.

    Vuex in store.ts is used to pass the necessary data into the relevant modules.

    c-home, c-widget, c-summary, c-authorship, c-zoom, c-segment, and c-ramp are components embedded into the report and will render the corresponding content based on the data passed into it from Vuex.

    Loading of report information

    The main Vue object depends on the summary.json data to determine the right commits.json files to load into memory. This is handled by api.ts, which loads the relevant file information from the network files if available; otherwise, a report archive, archive.zip, has to be used.

    Once the relevant commit.json files are loaded, all the repo information will be passed into c-summary to be loaded in the summary view as the relevant ramp charts.

    Activating additional view modules

    Most activity or actions should happen within the module itself, but in the case where there is a need to spawn or alter the view of another module, an event is emitted from the first module to the Vuex store, which then handles the data received and passes it along to the relevant modules.

    Other than the global main Vue object, another global variable we have is the window.hashParams. This object is responsible for generating the relevant permalink for a specific view of the report's summary module.

    Data loader (api.ts)

    This is the module that is in charge of loading and parsing the data files generated as part of the report.

    Loading from ZIP file

    Due to security design, most modern browsers (e.g., Chrome) do not allow web pages to obtain local files using the directory alone. As such, a ZIP archive of the report information will be produced alongside the report generation.

    This archive will be used in place of the network files to load information into the report when the network files are unavailable.

    The API module will be handling all requests for all the JSON data files. If the network file is not available, the files will be obtained from the zip archive provided.

    Retrieving and parsing information

    After the JSON files are loaded from their respective sources, the data will be parsed as objects and included inside the global storage object, window.REPOS, in the right format.

    For the basic skeleton of window.REPOS, refer to the generated summary.json file in the report for more details.

    Home view (c-home.vue)

    The c-home module is in charge of rendering the main report, and renders c-resizer, c-summary, c-authorship and c-zoom.

    Widget view (c-widget.vue)

    The c-widget module is in charge of rendering the widget from the iframe and only renders c-summary. An additional prop, isWidgetMode, is passed to c-summary so it knows to render as a widget and omit unnecessary elements.

    Summary view (c-summary.vue)

    The c-summary module is in charge of loading the ramp charts from the corresponding commits.json.

    Initializing the data for the ramp charts

    The summary module is activated after the information is loaded from the main Vue.JS object. At creation, the repo attribute is populated with the window.REPOS object, which contains information loaded from summary.json.

    Filtering users and repositories

    The commits information is retrieved from the corresponding project folders for each repository. This information will be filtered and sorted before being passed into the template to be displayed as ramp charts.

    Authorship view (c-authorship.vue)

    The authorship module retrieves the relevant information from the corresponding authorship.json file if it is not yet loaded. If it has been loaded, the data will be written into window.REPOS and be read from there instead.

    Showing relevant information by authors

    The files will be filtered, picking only files the selected author has written in. The lines are then split into chunks of "touched" and "untouched" code segments displayed in the tab view which will be popped up on the right side of the screen.

    Zoom view (c-zoom.vue)

    The c-zoom module is in charge of filtering and displaying the commits from the ramp chart's selected sub-range.

    Ramp view (c-ramp.vue)

    The c-ramp module is responsible for receiving the relevant information from c-summary and generating ramp charts that contain ramp slices.

    Padding for dates

    For ramps between the date ranges, the slices will be selected and it will be pre and post padded with empty slices to align the ramp slice between the sinceDate and untilDate. The ramps will then be rendered with the slices in the right position.

    Segment view (c-segment.vue)

    The c-segment module is used as a component in c-authorship. It separates the code in terms of "touched" and "untouched" segments and only loads each "untouched" segment when it is toggled.

    [Powered by MarkBind 5.5.2, generated on Tue, 14 May 2024, 13:12:51 UTC]
    +The tabbed interface is responsible for loading various modules such as authorship and zoom to display additional information.

    Typescript and Vue files

    JSON report files

    App (app.vue)

    This contains the logic for the main VueJS object, app.vue, which is the entry point for the web application.

    Vuex in store.ts is used to pass the necessary data into the relevant modules.

    c-home, c-widget, c-summary, c-authorship, c-zoom, c-segment, and c-ramp are components embedded into the report and will render the corresponding content based on the data passed into it from Vuex.

    Loading of report information

    The main Vue object depends on the summary.json data to determine the right commits.json files to load into memory. This is handled by api.ts, which loads the relevant file information from the network files if available; otherwise, a report archive, archive.zip, has to be used.

    Once the relevant commit.json files are loaded, all the repo information will be passed into c-summary to be loaded in the summary view as the relevant ramp charts.

    Activating additional view modules

    Most activity or actions should happen within the module itself, but in the case where there is a need to spawn or alter the view of another module, an event is emitted from the first module to the Vuex store, which then handles the data received and passes it along to the relevant modules.

    Other than the global main Vue object, another global variable we have is the window.hashParams. This object is responsible for generating the relevant permalink for a specific view of the report's summary module.

    Data loader (api.ts)

    This is the module that is in charge of loading and parsing the data files generated as part of the report.

    Loading from ZIP file

    Due to security design, most modern browsers (e.g., Chrome) do not allow web pages to obtain local files using the directory alone. As such, a ZIP archive of the report information will be produced alongside the report generation.

    This archive will be used in place of the network files to load information into the report when the network files are unavailable.

    The API module will be handling all requests for all the JSON data files. If the network file is not available, the files will be obtained from the zip archive provided.

    Retrieving and parsing information

    After the JSON files are loaded from their respective sources, the data will be parsed as objects and included inside the global storage object, window.REPOS, in the right format.

    For the basic skeleton of window.REPOS, refer to the generated summary.json file in the report for more details.

    Home view (c-home.vue)

    The c-home module is in charge of rendering the main report, and renders c-resizer, c-summary, c-authorship and c-zoom.

    Widget view (c-widget.vue)

    The c-widget module is in charge of rendering the widget from the iframe and only renders c-summary. An additional prop, isWidgetMode, is passed to c-summary so it knows to render as a widget and omit unnecessary elements.

    Summary view (c-summary.vue)

    The c-summary module is in charge of loading the ramp charts from the corresponding commits.json.

    Initializing the data for the ramp charts

    The summary module is activated after the information is loaded from the main Vue.JS object. At creation, the repo attribute is populated with the window.REPOS object, which contains information loaded from summary.json.

    Filtering users and repositories

    The commits information is retrieved from the corresponding project folders for each repository. This information will be filtered and sorted before being passed into the template to be displayed as ramp charts.

    Authorship view (c-authorship.vue)

    The authorship module retrieves the relevant information from the corresponding authorship.json file if it is not yet loaded. If it has been loaded, the data will be written into window.REPOS and be read from there instead.

    Showing relevant information by authors

    The files will be filtered, picking only files the selected author has written in. The lines are then split into chunks of "touched" and "untouched" code segments displayed in the tab view which will be popped up on the right side of the screen.

    Zoom view (c-zoom.vue)

    The c-zoom module is in charge of filtering and displaying the commits from the ramp chart's selected sub-range.

    Ramp view (c-ramp.vue)

    The c-ramp module is responsible for receiving the relevant information from c-summary and generating ramp charts that contain ramp slices.

    Padding for dates

    For ramps between the date ranges, the slices will be selected and it will be pre and post padded with empty slices to align the ramp slice between the sinceDate and untilDate. The ramps will then be rendered with the slices in the right position.

    Segment view (c-segment.vue)

    The c-segment module is used as a component in c-authorship. It separates the code in terms of "touched" and "untouched" segments and only loads each "untouched" segment when it is toggled.

    [Powered by MarkBind 5.5.2, generated on Thu, 16 May 2024, 22:31:25 UTC]
    diff --git a/dg/report.page-vue-render.js b/dg/report.page-vue-render.js index ca44457119..f59546145f 100644 --- a/dg/report.page-vue-render.js +++ b/dg/report.page-vue-render.js @@ -1,7 +1,7 @@ var pageVueRenderFn = function anonymous( ) { -with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"fixed":""}},[_c('navbar',{attrs:{"type":"dark"},scopedSlots:_u([{key:"brand",fn:function(){return [_c('a',{staticClass:"navbar-brand",attrs:{"href":"/index.html","title":"Home"}},[_c('img',{attrs:{"width":"30px","src":"/favicon.ico"}})])]},proxy:true},{key:"right",fn:function(){return [_c('li',[_c('form',{staticClass:"navbar-form"},[_c('searchbar',{attrs:{"data":searchData,"placeholder":"Search","on-hit":searchCallback,"menu-align-right":""}})],1)])]},proxy:true}])},[_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/index.html"}},[_v("HOME")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/showcase.html"}},[_v("SHOWCASE")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/ug/index.html"}},[_v("USER GUIDE")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/dg/index.html"}},[_v("DEVELOPER GUIDE")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/about.html"}},[_v("ABOUT")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/contact.html"}},[_v("CONTACT")])]),_v(" "),_c('li',{attrs:{"tags":"dev"}},[_c('a',{staticClass:"nav-link",attrs:{"href":"https://reposense.org","target":"_blank"}},[_c('span',[_c('span',{staticClass:"fas fa-external-link-alt",attrs:{"aria-hidden":"true"}}),_v(" PRODUCTION SITE")])])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"https://github.com/RepoSense/reposense","target":"_blank"}},[_c('span',[_c('span',{staticClass:"fab fa-github",attrs:{"aria-hidden":"true"}})])])])])],1),_v(" "),_c('div',{attrs:{"id":"flex-body"}},[_c('overlay-source',{staticClass:"fixed-header-padding",attrs:{"id":"site-nav","tag-name":"nav","to":"site-nav"}},[_c('div',{staticClass:"site-nav-top"},[_c('div',{staticClass:"font-weight-bold mb-2",staticStyle:{"font-size":"1.25rem"}},[_c('span',[_c('strong',[_c('strong',[_v("DEVELOPER GUIDE")])])])])]),_v(" "),_c('div',{staticClass:"nav-component slim-scroll"},[_c('div',[_c('site-nav',[_c('overlay-source',{staticClass:"site-nav-list site-nav-list-root",attrs:{"tag-name":"ul","to":"mb-site-nav"}},[_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/index.html"}},[_c('strong',[_v("Contributing")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/settingUp.html"}},[_c('strong',[_v("Setting up")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/learningBasics.html"}},[_c('strong',[_v("Learning the basics")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/workflow.html"}},[_c('strong',[_v("Workflow")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('strong',[_v("Design and implementation")]),_v(" "),_c('div',{staticClass:"site-nav-dropdown-btn-container"},[_c('i',{staticClass:"site-nav-dropdown-btn-icon site-nav-rotate-icon",attrs:{"onclick":"handleSiteNavClick(this.parentNode.parentNode, false); event.stopPropagation();"}},[_c('span',{staticClass:"glyphicon glyphicon-menu-down",attrs:{"aria-hidden":"true"}})])])]),_c('ul',{staticClass:"site-nav-dropdown-container site-nav-dropdown-container-open site-nav-list"},[_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/architecture.html"}},[_v("Architecture")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/report.html"}},[_v("HTML report")])])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/projectManagement.html"}},[_c('strong',[_v("Project management")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/devOpsGuide.html"}},[_c('strong',[_v("DevOps guide")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('strong',[_v("Appendices")]),_v(" "),_c('div',{staticClass:"site-nav-dropdown-btn-container"},[_c('i',{staticClass:"site-nav-dropdown-btn-icon site-nav-rotate-icon",attrs:{"onclick":"handleSiteNavClick(this.parentNode.parentNode, false); event.stopPropagation();"}},[_c('span',{staticClass:"glyphicon glyphicon-menu-down",attrs:{"aria-hidden":"true"}})])])]),_c('ul',{staticClass:"site-nav-dropdown-container site-nav-dropdown-container-open site-nav-list"},[_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/cli.html"}},[_v("CLI syntax reference")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/styleGuides.html"}},[_v("Style guides")])])])])])])],1)],1)])]),_v(" "),_c('div',{staticClass:"fixed-header-padding",attrs:{"id":"content-wrapper"}},[_m(0),_v(" "),_m(1),_v(" "),_m(2),_v(" "),_m(3),_v(" "),_m(4),_v(" "),_c('pic',{attrs:{"src":"/RepoSense/diagrams/ReportArchitecture.png"}}),_v(" "),_m(5),_v(" "),_c('p',[_v("The report interface is broken down into two main parts")]),_v(" "),_m(6),_v(" "),_m(7),_v(" "),_m(8),_v(" "),_m(9),_v(" "),_m(10),_v(" "),_m(11),_v(" "),_m(12),_v(" "),_m(13),_v(" "),_m(14),_v(" "),_m(15),_v(" "),_m(16),_v(" "),_m(17),_v(" "),_m(18),_v(" "),_m(19),_v(" "),_c('p',[_v("Most activity or actions should happen within the module itself, but in the case where there is a need to spawn or alter the view of another module, an event is emitted from the first module to the Vuex store, which then handles the data received and passes it along to the relevant modules.")]),_v(" "),_m(20),_v(" "),_m(21),_v(" "),_m(22),_v(" "),_c('p',[_v("This is the module that is in charge of loading and parsing the data files generated as part of the report.")]),_v(" "),_m(23),_v(" "),_c('p',[_v("Due to security design, most modern browsers (e.g., Chrome) do not allow web pages to obtain local files using the directory alone. As such, a ZIP archive of the report information will be produced alongside the report generation.")]),_v(" "),_c('p',[_v("This archive will be used in place of the network files to load information into the report when the network files are unavailable.")]),_v(" "),_c('p',[_v("The API module will be handling all requests for all the JSON data files. If the network file is not available, the files will be obtained from the zip archive provided.")]),_v(" "),_m(24),_v(" "),_m(25),_v(" "),_m(26),_v(" "),_m(27),_v(" "),_m(28),_v(" "),_m(29),_v(" "),_m(30),_v(" "),_m(31),_v(" "),_m(32),_v(" "),_c('pic',{attrs:{"src":"/RepoSense/diagrams/ReportArchitectureSummary.png"}}),_v(" "),_m(33),_v(" "),_m(34),_v(" "),_m(35),_v(" "),_c('p',[_v("The commits information is retrieved from the corresponding project folders for each repository. This information will be filtered and sorted before being passed into the template to be displayed as ramp charts.")]),_v(" "),_m(36),_v(" "),_m(37),_v(" "),_c('pic',{attrs:{"src":"/RepoSense/diagrams/ReportArchitectureAuthorship.png"}}),_v(" "),_m(38),_v(" "),_c('p',[_v("The files will be filtered, picking only files the selected author has written in. The lines are then split into chunks of \"touched\" and \"untouched\" code segments displayed in the tab view which will be popped up on the right side of the screen.")]),_v(" "),_m(39),_v(" "),_m(40),_v(" "),_m(41),_v(" "),_m(42),_v(" "),_m(43),_v(" "),_m(44),_v(" "),_m(45),_v(" "),_m(46)],1)],1),_v(" "),_m(47)])} +with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"fixed":""}},[_c('navbar',{attrs:{"type":"dark"},scopedSlots:_u([{key:"brand",fn:function(){return [_c('a',{staticClass:"navbar-brand",attrs:{"href":"/index.html","title":"Home"}},[_c('img',{attrs:{"width":"30px","src":"/favicon.ico"}})])]},proxy:true},{key:"right",fn:function(){return [_c('li',[_c('form',{staticClass:"navbar-form"},[_c('searchbar',{attrs:{"data":searchData,"placeholder":"Search","on-hit":searchCallback,"menu-align-right":""}})],1)])]},proxy:true}])},[_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/index.html"}},[_v("HOME")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/showcase.html"}},[_v("SHOWCASE")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/ug/index.html"}},[_v("USER GUIDE")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/dg/index.html"}},[_v("DEVELOPER GUIDE")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/about.html"}},[_v("ABOUT")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/contact.html"}},[_v("CONTACT")])]),_v(" "),_c('li',{attrs:{"tags":"dev"}},[_c('a',{staticClass:"nav-link",attrs:{"href":"https://reposense.org","target":"_blank"}},[_c('span',[_c('span',{staticClass:"fas fa-external-link-alt",attrs:{"aria-hidden":"true"}}),_v(" PRODUCTION SITE")])])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"https://github.com/RepoSense/reposense","target":"_blank"}},[_c('span',[_c('span',{staticClass:"fab fa-github",attrs:{"aria-hidden":"true"}})])])])])],1),_v(" "),_c('div',{attrs:{"id":"flex-body"}},[_c('overlay-source',{staticClass:"fixed-header-padding",attrs:{"id":"site-nav","tag-name":"nav","to":"site-nav"}},[_c('div',{staticClass:"site-nav-top"},[_c('div',{staticClass:"font-weight-bold mb-2",staticStyle:{"font-size":"1.25rem"}},[_c('span',[_c('strong',[_c('strong',[_v("DEVELOPER GUIDE")])])])])]),_v(" "),_c('div',{staticClass:"nav-component slim-scroll"},[_c('div',[_c('site-nav',[_c('overlay-source',{staticClass:"site-nav-list site-nav-list-root",attrs:{"tag-name":"ul","to":"mb-site-nav"}},[_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/index.html"}},[_c('strong',[_v("Contributing")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/settingUp.html"}},[_c('strong',[_v("Setting up")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/learningBasics.html"}},[_c('strong',[_v("Learning the basics")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/workflow.html"}},[_c('strong',[_v("Workflow")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('strong',[_v("Design and implementation")]),_v(" "),_c('div',{staticClass:"site-nav-dropdown-btn-container"},[_c('i',{staticClass:"site-nav-dropdown-btn-icon site-nav-rotate-icon",attrs:{"onclick":"handleSiteNavClick(this.parentNode.parentNode, false); event.stopPropagation();"}},[_c('span',{staticClass:"glyphicon glyphicon-menu-down",attrs:{"aria-hidden":"true"}})])])]),_c('ul',{staticClass:"site-nav-dropdown-container site-nav-dropdown-container-open site-nav-list"},[_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/architecture.html"}},[_v("Architecture")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/report.html"}},[_v("HTML report")])])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/projectManagement.html"}},[_c('strong',[_v("Project management")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/devOpsGuide.html"}},[_c('strong',[_v("DevOps guide")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('strong',[_v("Appendices")]),_v(" "),_c('div',{staticClass:"site-nav-dropdown-btn-container"},[_c('i',{staticClass:"site-nav-dropdown-btn-icon site-nav-rotate-icon",attrs:{"onclick":"handleSiteNavClick(this.parentNode.parentNode, false); event.stopPropagation();"}},[_c('span',{staticClass:"glyphicon glyphicon-menu-down",attrs:{"aria-hidden":"true"}})])])]),_c('ul',{staticClass:"site-nav-dropdown-container site-nav-dropdown-container-open site-nav-list"},[_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/cli.html"}},[_v("CLI syntax reference")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/styleGuides.html"}},[_v("Style guides")])])])])])])],1)],1)])]),_v(" "),_c('div',{staticClass:"fixed-header-padding",attrs:{"id":"content-wrapper"}},[_m(0),_v(" "),_m(1),_v(" "),_m(2),_v(" "),_m(3),_v(" "),_m(4),_v(" "),_c('pic',{attrs:{"src":"/RepoSense/diagrams/ReportArchitecture.png"}}),_v(" "),_m(5),_v(" "),_c('p',[_v("The report interface is broken down into two main parts")]),_v(" "),_m(6),_v(" "),_m(7),_v(" "),_m(8),_v(" "),_m(9),_v(" "),_m(10),_v(" "),_m(11),_v(" "),_m(12),_v(" "),_m(13),_v(" "),_m(14),_v(" "),_m(15),_v(" "),_m(16),_v(" "),_m(17),_v(" "),_m(18),_v(" "),_m(19),_v(" "),_c('p',[_v("Most activity or actions should happen within the module itself, but in the case where there is a need to spawn or alter the view of another module, an event is emitted from the first module to the Vuex store, which then handles the data received and passes it along to the relevant modules.")]),_v(" "),_m(20),_v(" "),_m(21),_v(" "),_m(22),_v(" "),_c('p',[_v("This is the module that is in charge of loading and parsing the data files generated as part of the report.")]),_v(" "),_m(23),_v(" "),_c('p',[_v("Due to security design, most modern browsers (e.g., Chrome) do not allow web pages to obtain local files using the directory alone. As such, a ZIP archive of the report information will be produced alongside the report generation.")]),_v(" "),_c('p',[_v("This archive will be used in place of the network files to load information into the report when the network files are unavailable.")]),_v(" "),_c('p',[_v("The API module will be handling all requests for all the JSON data files. If the network file is not available, the files will be obtained from the zip archive provided.")]),_v(" "),_m(24),_v(" "),_m(25),_v(" "),_m(26),_v(" "),_m(27),_v(" "),_m(28),_v(" "),_m(29),_v(" "),_m(30),_v(" "),_m(31),_v(" "),_m(32),_v(" "),_c('pic',{attrs:{"src":"/RepoSense/diagrams/ReportArchitectureSummary.png"}}),_v(" "),_m(33),_v(" "),_m(34),_v(" "),_m(35),_v(" "),_c('p',[_v("The commits information is retrieved from the corresponding project folders for each repository. This information will be filtered and sorted before being passed into the template to be displayed as ramp charts.")]),_v(" "),_m(36),_v(" "),_m(37),_v(" "),_c('pic',{attrs:{"src":"/RepoSense/diagrams/ReportArchitectureAuthorship.png"}}),_v(" "),_m(38),_v(" "),_c('p',[_v("The files will be filtered, picking only files the selected author has written in. The lines are then split into chunks of \"touched\" and \"untouched\" code segments displayed in the tab view which will be popped up on the right side of the screen.")]),_v(" "),_m(39),_v(" "),_m(40),_v(" "),_m(41),_v(" "),_m(42),_v(" "),_m(43),_v(" "),_m(44),_v(" "),_m(45),_v(" "),_m(46)],1),_v(" "),_c('overlay-source',{staticClass:"fixed-header-padding",attrs:{"id":"page-nav","tag-name":"nav","to":"page-nav"}},[_c('div',{staticClass:"nav-component slim-scroll"},[_c('overlay-source',{staticClass:"nav nav-pills flex-column my-0 small no-flex-wrap",attrs:{"id":"mb-page-nav","tag-name":"nav","to":"mb-page-nav"}},[_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#html-report"}},[_v("HTML report‎")]),_v(" "),_c('nav',{staticClass:"nav nav-pills flex-column my-0 nested no-flex-wrap"},[_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#report-architecture"}},[_v("Report architecture‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#typescript-and-vue-files"}},[_v("Typescript and Vue files‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#json-report-files"}},[_v("JSON report files‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#app-app-vue"}},[_v("App (app.vue)‎")]),_v(" "),_c('nav',{staticClass:"nav nav-pills flex-column my-0 nested no-flex-wrap"},[_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#loading-of-report-information"}},[_v("Loading of report information‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#activating-additional-view-modules"}},[_v("Activating additional view modules‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#hash-link"}},[_v("Hash link‎")])]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#data-loader-api-ts"}},[_v("Data loader (api.ts)‎")]),_v(" "),_c('nav',{staticClass:"nav nav-pills flex-column my-0 nested no-flex-wrap"},[_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#loading-from-zip-file"}},[_v("Loading from ZIP file‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#retrieving-and-parsing-information"}},[_v("Retrieving and parsing information‎")])]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#home-view-c-home-vue"}},[_v("Home view (c-home.vue)‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#widget-view-c-widget-vue"}},[_v("Widget view (c-widget.vue)‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#summary-view-c-summary-vue"}},[_v("Summary view (c-summary.vue)‎")]),_v(" "),_c('nav',{staticClass:"nav nav-pills flex-column my-0 nested no-flex-wrap"},[_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#initializing-the-data-for-the-ramp-charts"}},[_v("Initializing the data for the ramp charts‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#filtering-users-and-repositories"}},[_v("Filtering users and repositories‎")])]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#authorship-view-c-authorship-vue"}},[_v("Authorship view (c-authorship.vue)‎")]),_v(" "),_c('nav',{staticClass:"nav nav-pills flex-column my-0 nested no-flex-wrap"},[_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#showing-relevant-information-by-authors"}},[_v("Showing relevant information by authors‎")])]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#zoom-view-c-zoom-vue"}},[_v("Zoom view (c-zoom.vue)‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#ramp-view-c-ramp-vue"}},[_v("Ramp view (c-ramp.vue)‎")]),_v(" "),_c('nav',{staticClass:"nav nav-pills flex-column my-0 nested no-flex-wrap"},[_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#padding-for-dates"}},[_v("Padding for dates‎")])]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#segment-view-c-segment-vue"}},[_v("Segment view (c-segment.vue)‎")])])])],1)])],1),_v(" "),_m(47)])} }; var pageVueStaticRenderFns = [function anonymous( ) { @@ -146,6 +146,6 @@ with(this){return _c('h2',{attrs:{"id":"segment-view-c-segment-vue"}},[_v("Segme with(this){return _c('p',[_v("The "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("c-segment")]),_v(" module is used as a component in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("c-authorship")]),_v(". It separates the code in terms of \"touched\" and \"untouched\" segments and only loads each \"untouched\" segment when it is toggled.")])} },function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('small',[_v("["),_c('span',[_c('strong',[_v("Powered by")])]),_v(" "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"30"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.2")]),_v(", generated on Tue, 14 May 2024, 13:12:51 UTC]")])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('small',[_v("["),_c('span',[_c('strong',[_v("Powered by")])]),_v(" "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"30"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.2")]),_v(", generated on Thu, 16 May 2024, 22:31:25 UTC]")])])])} }]; \ No newline at end of file diff --git a/dg/settingUp.html b/dg/settingUp.html index a538a66210..02915e92ef 100644 --- a/dg/settingUp.html +++ b/dg/settingUp.html @@ -11,10 +11,10 @@ - +

    Setting up

    Prerequisites:

    • JDK 11.0.21+9 up to 17 (download ).

    • Node.js 18 up to the latest minor version of 19 (download ).

    • git 2.23 or later (download ).

      Type java -version, node -v and git --version respectively on your OS terminal and ensure that you have the correct version of each prerequisite installed.

    Getting the code

    1. Fork the reposense/reposense repo.
    2. Clone the fork to your computer.

    Setting up the IDE

    The recommended IDE is Intellij IDEA. While it is not compulsory to use it, note that we will not be able to help you troubleshoot IDE problems if you use any other IDE.

    1. Ensure you have configured IDEA for the correct JDK, as explained in this tutorial.
    2. Import the project as a Gradle project, as explained in this tutorial.

    Verifying the setup

    This project is already configured to use Gradle for build automation. If you are new to Gradle, see this tutorial to learn how to use it.

    1. Open a command prompt and navigate to the project root.
    2. Run gradlew clean build (./gradlew clean build if you on a Unix-like OS), and ensure that it finishes with a BUILD SUCCESSFUL message.
    3. Run the tests using the gradlew test systemtest command and ensure it succeeds too.
    4. You can also try running the app using code, as given in the panel below.

    Before you start coding

    ... read the Workflow section.

    [Powered by MarkBind 5.5.2, generated on Tue, 14 May 2024, 13:12:51 UTC]
    +

    Setting up

    Prerequisites:

    • JDK 11.0.21+9 up to 17 (download ).

    • Node.js 18 up to the latest minor version of 19 (download ).

    • git 2.23 or later (download ).

      Type java -version, node -v and git --version respectively on your OS terminal and ensure that you have the correct version of each prerequisite installed.

    Getting the code

    1. Fork the reposense/reposense repo.
    2. Clone the fork to your computer.

    Setting up the IDE

    The recommended IDE is Intellij IDEA. While it is not compulsory to use it, note that we will not be able to help you troubleshoot IDE problems if you use any other IDE.

    1. Ensure you have configured IDEA for the correct JDK, as explained in this tutorial.
    2. Import the project as a Gradle project, as explained in this tutorial.

    Verifying the setup

    This project is already configured to use Gradle for build automation. If you are new to Gradle, see this tutorial to learn how to use it.

    1. Open a command prompt and navigate to the project root.
    2. Run gradlew clean build (./gradlew clean build if you on a Unix-like OS), and ensure that it finishes with a BUILD SUCCESSFUL message.
    3. Run the tests using the gradlew test systemtest command and ensure it succeeds too.
    4. You can also try running the app using code, as given in the panel below.

    Before you start coding

    ... read the Workflow section.

    [Powered by MarkBind 5.5.2, generated on Thu, 16 May 2024, 22:31:25 UTC]
    diff --git a/dg/settingUp.page-vue-render.js b/dg/settingUp.page-vue-render.js index 785a999202..51f1d5005c 100644 --- a/dg/settingUp.page-vue-render.js +++ b/dg/settingUp.page-vue-render.js @@ -1,7 +1,7 @@ var pageVueRenderFn = function anonymous( ) { -with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"fixed":""}},[_c('navbar',{attrs:{"type":"dark"},scopedSlots:_u([{key:"brand",fn:function(){return [_c('a',{staticClass:"navbar-brand",attrs:{"href":"/index.html","title":"Home"}},[_c('img',{attrs:{"width":"30px","src":"/favicon.ico"}})])]},proxy:true},{key:"right",fn:function(){return [_c('li',[_c('form',{staticClass:"navbar-form"},[_c('searchbar',{attrs:{"data":searchData,"placeholder":"Search","on-hit":searchCallback,"menu-align-right":""}})],1)])]},proxy:true}])},[_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/index.html"}},[_v("HOME")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/showcase.html"}},[_v("SHOWCASE")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/ug/index.html"}},[_v("USER GUIDE")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/dg/index.html"}},[_v("DEVELOPER GUIDE")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/about.html"}},[_v("ABOUT")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/contact.html"}},[_v("CONTACT")])]),_v(" "),_c('li',{attrs:{"tags":"dev"}},[_c('a',{staticClass:"nav-link",attrs:{"href":"https://reposense.org","target":"_blank"}},[_c('span',[_c('span',{staticClass:"fas fa-external-link-alt",attrs:{"aria-hidden":"true"}}),_v(" PRODUCTION SITE")])])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"https://github.com/RepoSense/reposense","target":"_blank"}},[_c('span',[_c('span',{staticClass:"fab fa-github",attrs:{"aria-hidden":"true"}})])])])])],1),_v(" "),_c('div',{attrs:{"id":"flex-body"}},[_c('overlay-source',{staticClass:"fixed-header-padding",attrs:{"id":"site-nav","tag-name":"nav","to":"site-nav"}},[_c('div',{staticClass:"site-nav-top"},[_c('div',{staticClass:"font-weight-bold mb-2",staticStyle:{"font-size":"1.25rem"}},[_c('span',[_c('strong',[_c('strong',[_v("DEVELOPER GUIDE")])])])])]),_v(" "),_c('div',{staticClass:"nav-component slim-scroll"},[_c('div',[_c('site-nav',[_c('overlay-source',{staticClass:"site-nav-list site-nav-list-root",attrs:{"tag-name":"ul","to":"mb-site-nav"}},[_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/index.html"}},[_c('strong',[_v("Contributing")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/settingUp.html"}},[_c('strong',[_v("Setting up")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/learningBasics.html"}},[_c('strong',[_v("Learning the basics")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/workflow.html"}},[_c('strong',[_v("Workflow")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('strong',[_v("Design and implementation")]),_v(" "),_c('div',{staticClass:"site-nav-dropdown-btn-container"},[_c('i',{staticClass:"site-nav-dropdown-btn-icon site-nav-rotate-icon",attrs:{"onclick":"handleSiteNavClick(this.parentNode.parentNode, false); event.stopPropagation();"}},[_c('span',{staticClass:"glyphicon glyphicon-menu-down",attrs:{"aria-hidden":"true"}})])])]),_c('ul',{staticClass:"site-nav-dropdown-container site-nav-dropdown-container-open site-nav-list"},[_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/architecture.html"}},[_v("Architecture")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/report.html"}},[_v("HTML report")])])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/projectManagement.html"}},[_c('strong',[_v("Project management")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/devOpsGuide.html"}},[_c('strong',[_v("DevOps guide")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('strong',[_v("Appendices")]),_v(" "),_c('div',{staticClass:"site-nav-dropdown-btn-container"},[_c('i',{staticClass:"site-nav-dropdown-btn-icon site-nav-rotate-icon",attrs:{"onclick":"handleSiteNavClick(this.parentNode.parentNode, false); event.stopPropagation();"}},[_c('span',{staticClass:"glyphicon glyphicon-menu-down",attrs:{"aria-hidden":"true"}})])])]),_c('ul',{staticClass:"site-nav-dropdown-container site-nav-dropdown-container-open site-nav-list"},[_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/cli.html"}},[_v("CLI syntax reference")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/styleGuides.html"}},[_v("Style guides")])])])])])])],1)],1)])]),_v(" "),_c('div',{staticClass:"fixed-header-padding",attrs:{"id":"content-wrapper"}},[_m(0),_v(" "),_m(1),_v(" "),_c('ul',[_m(2),_v(" "),_m(3),_v(" "),_c('li',[_m(4),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Type "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -version")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("node -v")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("git --version")]),_v(" respectively on your OS terminal and ensure that you have the correct version of each prerequisite installed.")])])],1)]),_v(" "),_m(5),_v(" "),_m(6),_v(" "),_m(7),_v(" "),_c('box',{attrs:{"type":"warning","seamless":""}},[_c('p',[_v("The recommended IDE is "),_c('strong',[_v("Intellij IDEA")]),_v(". While it is not compulsory to use it, note that we will not be able to help you troubleshoot IDE problems if you use any other IDE.")])]),_v(" "),_m(8),_v(" "),_m(9),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("This project is already configured to use Gradle for build automation. If you are new to Gradle, see "),_c('a',{attrs:{"href":"https://se-education.org/guides/tutorials/gradle.html"}},[_v("this tutorial")]),_v(" to learn how to use it.")])]),_v(" "),_m(10),_v(" "),_c('div',{staticClass:"indented-level2"},[_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('span',[_c('span',{staticClass:"glyphicon glyphicon-log-in",attrs:{"aria-hidden":"true"}})]),_v(" Developer guide → "),_c('strong',[_v("Workflow → Running the app from code")])])]},proxy:true}])},[_v(" "),_c('div',[_c('ul',[_c('li',[_v("To run the app from code, run "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("gradlew run")]),_v(" from the project root. By default, it will run based on the config files in the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("[project root]/config")]),_v(" folder, and generate the report in the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("[project root]/reposense-report")]),_v(" folder.")]),_v(" "),_c('li',[_v("To supply flags to customize the report, you can use the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-Dargs=\"[FLAGS]\"")]),_v(" format."),_c('br'),_v("\ne.g., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("gradlew run -Dargs=\"--since 31/12/2019 --formats java adoc xml\"")])]),_v(" "),_c('li',[_v("Run "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("gradlew run -Dargs=\"--view\"")]),_v(" to generate the report and view it in the default browser.")]),_v(" "),_c('li',[_v("You can refer to the panel below for the format of the flags that can be supplied in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-Dargs=\"[FLAGS]\"")]),_v(".")])]),_v(" "),_c('div',{staticClass:"indented-level0"},[_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('span',[_c('span',{staticClass:"glyphicon glyphicon-log-in",attrs:{"aria-hidden":"true"}})]),_v(" User guide → Appendix: "),_c('strong',[_v("CLI syntax reference")])])]},proxy:true}])},[_v(" "),_c('div',[_c('h1',{staticClass:"display-4",attrs:{"id":"appendix-cli-syntax-reference"}},[_c('span',[_v("Appendix: CLI syntax reference")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#appendix-cli-syntax-reference","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{staticClass:"lead"},[_c('p',[_v("The command "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar")]),_v(" takes several flags.")])]),_v(" "),_c('box',[_c('p',[_c('strong',[_v("Examples")]),_v(":")]),_v(" "),_c('p',[_v("An example of a command using most parameters:"),_c('br'),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar --repos https://github.com/reposense/RepoSense.git --output ./report_folder --since 31/1/2017 --until 31/12/2018 --formats java adoc xml --view --ignore-standalone-config --last-modified-date --timezone UTC+08 --find-previous-authors --analyze-authorship --originality-threshold 0.66")])]),_v(" "),_c('p',[_v("Same command as above but using most parameters in alias format:"),_c('br'),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar -r https://github.com/reposense/RepoSense.git -o ./report_folder -s 31/1/2017 -u 31/12/2018 -f java adoc xml -v -i -l -t UTC+08 -F -A -ot 0.66")])])]),_v(" "),_c('p',[_v("The section below provides explanations for each of the flags.")]),_v(" "),_c('h3',{attrs:{"id":"analyze-authorship-a"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--analyze-authorship")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-A")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#analyze-authorship-a","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--analyze-authorship")])]),_v(": Performs further analysis to distinguish between partial and full credit attribution for\nlines of code assigned to the author.")]),_v(" "),_c('ul',[_c('li',[_v("Default: this feature is turned "),_c('em',[_c('strong',[_v("off")])]),_v(" by default and the author will receive partial credits for all lines of\ncode, as the code lines are at least partial credit but may not qualify for full credit.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-A")]),_v(" (upper case)")]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--analyze-authorship")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-A")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("A darker background colour represents full credit, while a lighter background colour represents partial credit.")]),_v(" "),_c('p',[_v("If the code is attributed to a different author by the user via "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("@@author")]),_v(" tag, then the new author will be given\npartial credit.")])]),_v(" "),_c('h3',{attrs:{"id":"assets-a"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--assets")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-a")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#assets-a","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{attrs:{"id":"section-assets"}},[_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--assets ASSETS_DIRECTORY")])]),_v(": Specifies where to place assets for report generation.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ASSETS_DIRECTORY")]),_v(" The directory containing the assets files. A "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("favicon.ico")]),_v(" file can be placed here to customize the favicon of the dashboard, while a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("title.md")]),_v(" file can be placed to customize the "),_c('a',{attrs:{"href":"https://reposense.org/ug/customizingReports.html#add-a-title"}},[_v("title")]),_v(" of the report using "),_c('a',{attrs:{"href":"https://www.markdownguide.org/basic-syntax/"}},[_v("Markdown syntax")]),_v(".")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-a")])]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--assets ./assets")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-a ./assets")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("If "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--assets")]),_v(" is not specified, RepoSense looks for assets in the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./assets")]),_v(" directory.")])])])],1),_v(" "),_c('h3',{attrs:{"id":"config-c"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--config")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-c")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#config-c","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{attrs:{"id":"section-config"}},[_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--config CONFIG_DIRECTORY")])]),_v(": Specifies that config files located in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("CONFIG_DIRECTORY")]),_v(" should be used to customize the report.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("CONFIG_DIRECTORY")]),_v(" The directory containing the config files. Should contain a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(" file. Optionally, can contain an "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(" file or/and a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("group-config.csv")]),_v(" file or/and a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("report-config.json")]),_v(" file or/and a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("blurbs.md")]),_v(" file.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-c")])]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar --config ./config")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("Cannot be used with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repos")]),_v(". The "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repos")]),_v(" flag will take precedence over this flag.")]),_v(" "),_c('li',[_v("If both "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repos")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--config")]),_v(" are not specified, RepoSense looks for config files in the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./config")]),_v(" directory.")]),_v(" "),_c('li',[_v("Config files must follow "),_c('a',{attrs:{"href":"/RepoSense/ug/configFiles.html"}},[_v("this")]),_v(" format.")])])])],1),_v(" "),_c('h3',{attrs:{"id":"formats-f"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--formats")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-f")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#formats-f","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--formats LIST_OF_FORMATS")])]),_v(": Specifies which file extensions to be included in the analysis.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("LIST_OF_FORMATS")]),_v(" A space-separated list of file extensions that should be included in the analysis."),_c('br'),_v("\nDefault: all file formats")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-f")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--formats css fxml gradle")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-f css fxml gradle")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Binary file formats, such as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("jpg")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("png")]),_v(","),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("exe")]),_v(","),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("zip")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("rar")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("docx")]),_v(", and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("pptx")]),_v(", all will be labelled as the file type "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("binary")]),_v(" in the generated report.")])]),_v(" "),_c('h3',{attrs:{"id":"find-previous-authors-f"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--find-previous-authors")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-F")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#find-previous-authors-f","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--find-previous-authors")])]),_v(": Utilizes Git blame's ignore revisions functionality, RepoSense will attempt to blame the line changes caused by commits in the ignore commit list to the previous authors who altered those lines (if available).")]),_v(" "),_c('ul',[_c('li',[_v("Default: RepoSense will assume that no authors are responsible for the code changes in the lines altered by commits in the ignore commit list.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-F")]),_v(" (uppercase F)")]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--find-previous-authors")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-F")])])]),_v(" "),_c('h3',{attrs:{"id":"help-h"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--help")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-h")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#help-h","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--help")])]),_v(": Shows the help message.")]),_v(" "),_c('ul',[_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-h")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Cannot be used with any other flags. This flag takes precedence over all other flags.")])]),_v(" "),_c('h3',{attrs:{"id":"ignore-standalone-config-i"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--ignore-standalone-config")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-i")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#ignore-standalone-config-i","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--ignore-standalone-config")])]),_v(": Specifies that the standalone config file in the repo should be ignored.")]),_v(" "),_c('ul',[_c('li',[_v("Default: the standalone config file is not ignored")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-i")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--ignore-standalone-config")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-i")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("This flag overrides the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Ignore standalone config")]),_v(" field in the CSV config file.")])]),_v(" "),_c('h3',{attrs:{"id":"ignore-filesize-limit-i"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--ignore-filesize-limit")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-I")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#ignore-filesize-limit-i","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--ignore-filesize-limit")])]),_v(": Specifies that the file size limit (both default and user-defined) should be ignored during the analysis.")]),_v(" "),_c('ul',[_c('li',[_v("Default: the file size limit is not ignored")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-I")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--ignore-filesize-limit")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-I")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("All files are subject to a default file size limit or a custom size limit set by the user. Most files should not be\naffected by the default size limit. This flag can be useful for including files in your report that are affected by\nthe size limit. Note that this flag may result in large report sizes and/or slower report generation.")])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("This flag overrides the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Ignore file size limit")]),_v(" field in the CSV config file.")])]),_v(" "),_c('h3',{attrs:{"id":"last-modified-date-l"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--last-modified-date")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-l")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#last-modified-date-l","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--last-modified-date")])]),_v(": Specifies that the last modified date of each line of code should be added to "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("authorship.json")]),_v(".")]),_v(" "),_c('ul',[_c('li',[_v("Default: the last modified date of each line of code will not be added to "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("authorship.json")])]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-l")]),_v(" (lowercase L)")]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--last-modified-date")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-l")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("Cannot be used with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--shallow-cloning")]),_v(". This may result in an incorrect last modified date.")]),_v(" "),_c('li',[_v("The last modified dates will be in the same timezone specified with the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--timezone")]),_v(" flag.")])])]),_v(" "),_c('h3',{attrs:{"id":"originality-threshold-ot"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--originality-threshold")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-ot")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#originality-threshold-ot","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--originality-threshold [VALUE]")])]),_v(": Specifies the cut-off point for partial and full credit\nin "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--analyze-authorship")]),_v(". Author will be given full credit if their contribution exceeds this threshold, else partial\ncredit is given.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("VALUE")]),_v(" Optional. Acceptable range: [0.0, 1.0]."),_c('br'),_v("\nDefault: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("0.51")])]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-ot")])]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--originality-threshold 0.66")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-ot 0.66")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("Requires "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--analyze-authorship")]),_v(" flag.")]),_v(" "),_c('li',[_v("An author's contribution, or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("originality score")]),_v(", is calculated using Levenshtein Distance (Edit Distance) algorithm.\nWe compare the difference between current code line and its previous versions.")])])]),_v(" "),_c('h3',{attrs:{"id":"output-o"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--output")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-o")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#output-o","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--output OUTPUT_DIRECTORY")])]),_v(": Indicates where to save the report generated.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("OUTPUT_DIRECTORY")]),_v(" The location for the generated "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("reposense-report")]),_v(" folder."),_c('br'),_v("\nDefault: current directory")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-o")])]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--output ./foo")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-o ./foo")]),_v(" (the report will be in the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./foo/reposense-report")]),_v(" folder)")])]),_v(" "),_c('h3',{attrs:{"id":"period-p"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--period")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-p")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#period-p","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--period PERIOD")])]),_v(": Specifies the period of analysis window.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("PERIOD")]),_v(" The period of analysis window, in the format "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("nd")]),_v(" (for n days) or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("nw")]),_v(" (for n weeks). It is used to calculate end date if only start date is specified, or calculate end date if only start date is specified.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-p")])]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--period 30d")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--period 4w")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("If both start date and end date are not specified, the date of generating the report will be taken as the end date.")]),_v(" "),_c('li',[_v("May analyze the incorrect date range if used with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since d1")]),_v(". The program will throw a warning.")]),_v(" "),_c('li',[_v("Cannot be used with both "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--until")]),_v(". The program will throw an exception.")])])]),_v(" "),_c('h3',{attrs:{"id":"repo-repos-r"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repo")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repos")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-r")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#repo-repos-r","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repo REPO_LOCATION")])]),_v(": Specifies which repositories to analyze.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("REPO_LOCATION")]),_v(" A list of URLs or the disk location of the git repositories to analyze, separated by spaces.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-r")])]),_v(" "),_c('li',[_v("Examples:\n"),_c('ul',[_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repos https://github.com/reposense/RepoSense.git")])]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repo https://github.com/reposense/RepoSense.git c:/myRepose/foo/bar")]),_v(": analyzes the two specified repos (one remote, one local) and generates one report containing details of both.")])])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Cannot be used with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--config")]),_v(". This flag takes precedence over "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--config")]),_v(".")])]),_v(" "),_c('h3',{attrs:{"id":"shallow-cloning-s"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--shallow-cloning")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-S")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#shallow-cloning-s","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--shallow-cloning")])]),_v(": Clones repositories using Git's shallow cloning functionality, which can significantly reduce the time taken to clone large repositories. However, the flag should not be used for smaller repositories where the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(".git")]),_v(" file is smaller than 500 MB, as it would create overhead.")]),_v(" "),_c('ul',[_c('li',[_v("Default: RepoSense does not clone repositories using Git's shallow cloning functionality.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-S")]),_v(" (uppercase S)")]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--shallow-cloning")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-S")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Cannot be used with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--last-modified-date")]),_v(". This may result in an incorrect last modified date.")])]),_v(" "),_c('h3',{attrs:{"id":"since-s"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-s")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#since-s","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since START_DATE")])]),_v(": Specifies the start date for the period to be analyzed.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("START_DATE")]),_v(" The first day of the period to be analyzed, in the format "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("DD/MM/YYYY")]),_v("."),_c('br'),_v("\nDefault: one month before the current date")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-s")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since 21/10/2017")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-s 21/10/2017")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("If the start date is not specified, only commits made one month before the end date (if specified) or the date of generating the report, will be captured and analyzed.")]),_v(" "),_c('li',[_v("If "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("d1")]),_v(" is specified as the start date ("),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since d1")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-s d1")]),_v("), then the program will search for the earliest commit date of all repositories and use that as the start date.")]),_v(" "),_c('li',[_v("If "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("d1")]),_v(" is specified together with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--period")]),_v(", then the program will warn that the date range being analyzed may be incorrect.")])])]),_v(" "),_c('h3',{attrs:{"id":"timezone-t"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--timezone")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-t")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#timezone-t","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--timezone ZONE_ID")])]),_v(": Indicates the timezone to be used for the analysis.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ZONE_ID")]),_v(" The timezone in the format "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ZONE_ID[±hh[mm]]")]),_v("."),_c('br'),_v("\nDefault: system's default timezone")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-t")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--timezone UTC+08")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-t UTC-1030")])])]),_v(" "),_c('h3',{attrs:{"id":"until-u"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--until")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-u")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#until-u","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--until END_DATE")])]),_v(": Specifies the end date of the analysis period.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("END_DATE")]),_v(" The last date of the period to be analyzed, in the format "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("DD/MM/YYYY")]),_v("."),_c('br'),_v("\nDefault: current date")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-u")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--until 21/10/2017")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-u 21/10/2017")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Note: If the end date is not specified, the date of generating the report will be taken as the end date.")])]),_v(" "),_c('h3',{attrs:{"id":"version-v"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--version")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-V")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#version-v","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--version")])]),_v(": Shows the version of RepoSense.")]),_v(" "),_c('ul',[_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-V")]),_v(" (upper case)")])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Cannot be used with any other flags. This flag takes precedence over all other flags other than "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--help")]),_v(".")])]),_v(" "),_c('h3',{attrs:{"id":"view-v"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--view")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-v")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#view-v","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--view [REPORT_FOLDER]")])]),_v(": Specifies that the report should be opened in the default browser.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("REPORT_FOLDER")]),_v(" Optional. If specified, no analysis will be performed and the report specified by the argument will be opened."),_c('br'),_v("\nDefault: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./reposense-report")])]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-v")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--view")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-v")])])])],1)])],1),_v(" "),_c('p')])])],1),_v(" "),_c('p'),_v(" "),_m(11),_v(" "),_m(12)],1)],1),_v(" "),_m(13)])} +with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"fixed":""}},[_c('navbar',{attrs:{"type":"dark"},scopedSlots:_u([{key:"brand",fn:function(){return [_c('a',{staticClass:"navbar-brand",attrs:{"href":"/index.html","title":"Home"}},[_c('img',{attrs:{"width":"30px","src":"/favicon.ico"}})])]},proxy:true},{key:"right",fn:function(){return [_c('li',[_c('form',{staticClass:"navbar-form"},[_c('searchbar',{attrs:{"data":searchData,"placeholder":"Search","on-hit":searchCallback,"menu-align-right":""}})],1)])]},proxy:true}])},[_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/index.html"}},[_v("HOME")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/showcase.html"}},[_v("SHOWCASE")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/ug/index.html"}},[_v("USER GUIDE")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/dg/index.html"}},[_v("DEVELOPER GUIDE")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/about.html"}},[_v("ABOUT")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/contact.html"}},[_v("CONTACT")])]),_v(" "),_c('li',{attrs:{"tags":"dev"}},[_c('a',{staticClass:"nav-link",attrs:{"href":"https://reposense.org","target":"_blank"}},[_c('span',[_c('span',{staticClass:"fas fa-external-link-alt",attrs:{"aria-hidden":"true"}}),_v(" PRODUCTION SITE")])])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"https://github.com/RepoSense/reposense","target":"_blank"}},[_c('span',[_c('span',{staticClass:"fab fa-github",attrs:{"aria-hidden":"true"}})])])])])],1),_v(" "),_c('div',{attrs:{"id":"flex-body"}},[_c('overlay-source',{staticClass:"fixed-header-padding",attrs:{"id":"site-nav","tag-name":"nav","to":"site-nav"}},[_c('div',{staticClass:"site-nav-top"},[_c('div',{staticClass:"font-weight-bold mb-2",staticStyle:{"font-size":"1.25rem"}},[_c('span',[_c('strong',[_c('strong',[_v("DEVELOPER GUIDE")])])])])]),_v(" "),_c('div',{staticClass:"nav-component slim-scroll"},[_c('div',[_c('site-nav',[_c('overlay-source',{staticClass:"site-nav-list site-nav-list-root",attrs:{"tag-name":"ul","to":"mb-site-nav"}},[_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/index.html"}},[_c('strong',[_v("Contributing")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/settingUp.html"}},[_c('strong',[_v("Setting up")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/learningBasics.html"}},[_c('strong',[_v("Learning the basics")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/workflow.html"}},[_c('strong',[_v("Workflow")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('strong',[_v("Design and implementation")]),_v(" "),_c('div',{staticClass:"site-nav-dropdown-btn-container"},[_c('i',{staticClass:"site-nav-dropdown-btn-icon site-nav-rotate-icon",attrs:{"onclick":"handleSiteNavClick(this.parentNode.parentNode, false); event.stopPropagation();"}},[_c('span',{staticClass:"glyphicon glyphicon-menu-down",attrs:{"aria-hidden":"true"}})])])]),_c('ul',{staticClass:"site-nav-dropdown-container site-nav-dropdown-container-open site-nav-list"},[_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/architecture.html"}},[_v("Architecture")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/report.html"}},[_v("HTML report")])])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/projectManagement.html"}},[_c('strong',[_v("Project management")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/devOpsGuide.html"}},[_c('strong',[_v("DevOps guide")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('strong',[_v("Appendices")]),_v(" "),_c('div',{staticClass:"site-nav-dropdown-btn-container"},[_c('i',{staticClass:"site-nav-dropdown-btn-icon site-nav-rotate-icon",attrs:{"onclick":"handleSiteNavClick(this.parentNode.parentNode, false); event.stopPropagation();"}},[_c('span',{staticClass:"glyphicon glyphicon-menu-down",attrs:{"aria-hidden":"true"}})])])]),_c('ul',{staticClass:"site-nav-dropdown-container site-nav-dropdown-container-open site-nav-list"},[_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/cli.html"}},[_v("CLI syntax reference")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/styleGuides.html"}},[_v("Style guides")])])])])])])],1)],1)])]),_v(" "),_c('div',{staticClass:"fixed-header-padding",attrs:{"id":"content-wrapper"}},[_m(0),_v(" "),_m(1),_v(" "),_c('ul',[_m(2),_v(" "),_m(3),_v(" "),_c('li',[_m(4),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Type "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -version")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("node -v")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("git --version")]),_v(" respectively on your OS terminal and ensure that you have the correct version of each prerequisite installed.")])])],1)]),_v(" "),_m(5),_v(" "),_m(6),_v(" "),_m(7),_v(" "),_c('box',{attrs:{"type":"warning","seamless":""}},[_c('p',[_v("The recommended IDE is "),_c('strong',[_v("Intellij IDEA")]),_v(". While it is not compulsory to use it, note that we will not be able to help you troubleshoot IDE problems if you use any other IDE.")])]),_v(" "),_m(8),_v(" "),_m(9),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("This project is already configured to use Gradle for build automation. If you are new to Gradle, see "),_c('a',{attrs:{"href":"https://se-education.org/guides/tutorials/gradle.html"}},[_v("this tutorial")]),_v(" to learn how to use it.")])]),_v(" "),_m(10),_v(" "),_c('div',{staticClass:"indented-level2"},[_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('span',[_c('span',{staticClass:"glyphicon glyphicon-log-in",attrs:{"aria-hidden":"true"}})]),_v(" Developer guide → "),_c('strong',[_v("Workflow → Running the app from code")])])]},proxy:true}])},[_v(" "),_c('div',[_c('ul',[_c('li',[_v("To run the app from code, run "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("gradlew run")]),_v(" from the project root. By default, it will run based on the config files in the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("[project root]/config")]),_v(" folder, and generate the report in the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("[project root]/reposense-report")]),_v(" folder.")]),_v(" "),_c('li',[_v("To supply flags to customize the report, you can use the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-Dargs=\"[FLAGS]\"")]),_v(" format."),_c('br'),_v("\ne.g., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("gradlew run -Dargs=\"--since 31/12/2019 --formats java adoc xml\"")])]),_v(" "),_c('li',[_v("Run "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("gradlew run -Dargs=\"--view\"")]),_v(" to generate the report and view it in the default browser.")]),_v(" "),_c('li',[_v("You can refer to the panel below for the format of the flags that can be supplied in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-Dargs=\"[FLAGS]\"")]),_v(".")])]),_v(" "),_c('div',{staticClass:"indented-level0"},[_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('span',[_c('span',{staticClass:"glyphicon glyphicon-log-in",attrs:{"aria-hidden":"true"}})]),_v(" User guide → Appendix: "),_c('strong',[_v("CLI syntax reference")])])]},proxy:true}])},[_v(" "),_c('div',[_c('h1',{staticClass:"display-4",attrs:{"id":"appendix-cli-syntax-reference"}},[_c('span',[_v("Appendix: CLI syntax reference")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#appendix-cli-syntax-reference","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{staticClass:"lead"},[_c('p',[_v("The command "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar")]),_v(" takes several flags.")])]),_v(" "),_c('box',[_c('p',[_c('strong',[_v("Examples")]),_v(":")]),_v(" "),_c('p',[_v("An example of a command using most parameters:"),_c('br'),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar --repos https://github.com/reposense/RepoSense.git --output ./report_folder --since 31/1/2017 --until 31/12/2018 --formats java adoc xml --view --ignore-standalone-config --last-modified-date --timezone UTC+08 --find-previous-authors --analyze-authorship --originality-threshold 0.66")])]),_v(" "),_c('p',[_v("Same command as above but using most parameters in alias format:"),_c('br'),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar -r https://github.com/reposense/RepoSense.git -o ./report_folder -s 31/1/2017 -u 31/12/2018 -f java adoc xml -v -i -l -t UTC+08 -F -A -ot 0.66")])])]),_v(" "),_c('p',[_v("The section below provides explanations for each of the flags.")]),_v(" "),_c('h3',{attrs:{"id":"analyze-authorship-a"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--analyze-authorship")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-A")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#analyze-authorship-a","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--analyze-authorship")])]),_v(": Performs further analysis to distinguish between partial and full credit attribution for\nlines of code assigned to the author.")]),_v(" "),_c('ul',[_c('li',[_v("Default: this feature is turned "),_c('em',[_c('strong',[_v("off")])]),_v(" by default and the author will receive partial credits for all lines of\ncode, as the code lines are at least partial credit but may not qualify for full credit.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-A")]),_v(" (upper case)")]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--analyze-authorship")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-A")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("A darker background colour represents full credit, while a lighter background colour represents partial credit.")]),_v(" "),_c('p',[_v("If the code is attributed to a different author by the user via "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("@@author")]),_v(" tag, then the new author will be given\npartial credit.")])]),_v(" "),_c('h3',{attrs:{"id":"assets-a"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--assets")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-a")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#assets-a","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{attrs:{"id":"section-assets"}},[_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--assets ASSETS_DIRECTORY")])]),_v(": Specifies where to place assets for report generation.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ASSETS_DIRECTORY")]),_v(" The directory containing the assets files. A "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("favicon.ico")]),_v(" file can be placed here to customize the favicon of the dashboard, while a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("title.md")]),_v(" file can be placed to customize the "),_c('a',{attrs:{"href":"https://reposense.org/ug/customizingReports.html#add-a-title"}},[_v("title")]),_v(" of the report using "),_c('a',{attrs:{"href":"https://www.markdownguide.org/basic-syntax/"}},[_v("Markdown syntax")]),_v(".")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-a")])]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--assets ./assets")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-a ./assets")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("If "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--assets")]),_v(" is not specified, RepoSense looks for assets in the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./assets")]),_v(" directory.")])])])],1),_v(" "),_c('h3',{attrs:{"id":"config-c"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--config")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-c")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#config-c","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{attrs:{"id":"section-config"}},[_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--config CONFIG_DIRECTORY")])]),_v(": Specifies that config files located in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("CONFIG_DIRECTORY")]),_v(" should be used to customize the report.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("CONFIG_DIRECTORY")]),_v(" The directory containing the config files. Should contain a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(" file. Optionally, can contain an "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(" file or/and a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("group-config.csv")]),_v(" file or/and a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("report-config.json")]),_v(" file or/and a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("blurbs.md")]),_v(" file.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-c")])]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar --config ./config")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("Cannot be used with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repos")]),_v(". The "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repos")]),_v(" flag will take precedence over this flag.")]),_v(" "),_c('li',[_v("If both "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repos")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--config")]),_v(" are not specified, RepoSense looks for config files in the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./config")]),_v(" directory.")]),_v(" "),_c('li',[_v("Config files must follow "),_c('a',{attrs:{"href":"/RepoSense/ug/configFiles.html"}},[_v("this")]),_v(" format.")])])])],1),_v(" "),_c('h3',{attrs:{"id":"formats-f"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--formats")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-f")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#formats-f","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--formats LIST_OF_FORMATS")])]),_v(": Specifies which file extensions to be included in the analysis.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("LIST_OF_FORMATS")]),_v(" A space-separated list of file extensions that should be included in the analysis."),_c('br'),_v("\nDefault: all file formats")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-f")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--formats css fxml gradle")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-f css fxml gradle")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Binary file formats, such as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("jpg")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("png")]),_v(","),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("exe")]),_v(","),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("zip")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("rar")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("docx")]),_v(", and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("pptx")]),_v(", all will be labelled as the file type "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("binary")]),_v(" in the generated report.")])]),_v(" "),_c('h3',{attrs:{"id":"find-previous-authors-f"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--find-previous-authors")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-F")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#find-previous-authors-f","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--find-previous-authors")])]),_v(": Utilizes Git blame's ignore revisions functionality, RepoSense will attempt to blame the line changes caused by commits in the ignore commit list to the previous authors who altered those lines (if available).")]),_v(" "),_c('ul',[_c('li',[_v("Default: RepoSense will assume that no authors are responsible for the code changes in the lines altered by commits in the ignore commit list.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-F")]),_v(" (uppercase F)")]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--find-previous-authors")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-F")])])]),_v(" "),_c('h3',{attrs:{"id":"help-h"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--help")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-h")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#help-h","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--help")])]),_v(": Shows the help message.")]),_v(" "),_c('ul',[_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-h")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Cannot be used with any other flags. This flag takes precedence over all other flags.")])]),_v(" "),_c('h3',{attrs:{"id":"ignore-standalone-config-i"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--ignore-standalone-config")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-i")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#ignore-standalone-config-i","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--ignore-standalone-config")])]),_v(": Specifies that the standalone config file in the repo should be ignored.")]),_v(" "),_c('ul',[_c('li',[_v("Default: the standalone config file is not ignored")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-i")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--ignore-standalone-config")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-i")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("This flag overrides the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Ignore standalone config")]),_v(" field in the CSV config file.")])]),_v(" "),_c('h3',{attrs:{"id":"ignore-filesize-limit-i"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--ignore-filesize-limit")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-I")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#ignore-filesize-limit-i","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--ignore-filesize-limit")])]),_v(": Specifies that the file size limit (both default and user-defined) should be ignored during the analysis.")]),_v(" "),_c('ul',[_c('li',[_v("Default: the file size limit is not ignored")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-I")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--ignore-filesize-limit")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-I")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("All files are subject to a default file size limit or a custom size limit set by the user. Most files should not be\naffected by the default size limit. This flag can be useful for including files in your report that are affected by\nthe size limit. Note that this flag may result in large report sizes and/or slower report generation.")])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("This flag overrides the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Ignore file size limit")]),_v(" field in the CSV config file.")])]),_v(" "),_c('h3',{attrs:{"id":"last-modified-date-l"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--last-modified-date")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-l")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#last-modified-date-l","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--last-modified-date")])]),_v(": Specifies that the last modified date of each line of code should be added to "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("authorship.json")]),_v(".")]),_v(" "),_c('ul',[_c('li',[_v("Default: the last modified date of each line of code will not be added to "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("authorship.json")])]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-l")]),_v(" (lowercase L)")]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--last-modified-date")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-l")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("Cannot be used with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--shallow-cloning")]),_v(". This may result in an incorrect last modified date.")]),_v(" "),_c('li',[_v("The last modified dates will be in the same timezone specified with the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--timezone")]),_v(" flag.")])])]),_v(" "),_c('h3',{attrs:{"id":"originality-threshold-ot"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--originality-threshold")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-ot")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#originality-threshold-ot","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--originality-threshold [VALUE]")])]),_v(": Specifies the cut-off point for partial and full credit\nin "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--analyze-authorship")]),_v(". Author will be given full credit if their contribution exceeds this threshold, else partial\ncredit is given.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("VALUE")]),_v(" Optional. Acceptable range: [0.0, 1.0]."),_c('br'),_v("\nDefault: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("0.51")])]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-ot")])]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--originality-threshold 0.66")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-ot 0.66")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("Requires "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--analyze-authorship")]),_v(" flag.")]),_v(" "),_c('li',[_v("An author's contribution, or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("originality score")]),_v(", is calculated using Levenshtein Distance (Edit Distance) algorithm.\nWe compare the difference between current code line and its previous versions.")])])]),_v(" "),_c('h3',{attrs:{"id":"output-o"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--output")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-o")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#output-o","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--output OUTPUT_DIRECTORY")])]),_v(": Indicates where to save the report generated.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("OUTPUT_DIRECTORY")]),_v(" The location for the generated "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("reposense-report")]),_v(" folder."),_c('br'),_v("\nDefault: current directory")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-o")])]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--output ./foo")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-o ./foo")]),_v(" (the report will be in the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./foo/reposense-report")]),_v(" folder)")])]),_v(" "),_c('h3',{attrs:{"id":"period-p"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--period")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-p")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#period-p","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--period PERIOD")])]),_v(": Specifies the period of analysis window.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("PERIOD")]),_v(" The period of analysis window, in the format "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("nd")]),_v(" (for n days) or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("nw")]),_v(" (for n weeks). It is used to calculate end date if only start date is specified, or calculate end date if only start date is specified.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-p")])]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--period 30d")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--period 4w")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("If both start date and end date are not specified, the date of generating the report will be taken as the end date.")]),_v(" "),_c('li',[_v("May analyze the incorrect date range if used with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since d1")]),_v(". The program will throw a warning.")]),_v(" "),_c('li',[_v("Cannot be used with both "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--until")]),_v(". The program will throw an exception.")])])]),_v(" "),_c('h3',{attrs:{"id":"repo-repos-r"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repo")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repos")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-r")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#repo-repos-r","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repo REPO_LOCATION")])]),_v(": Specifies which repositories to analyze.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("REPO_LOCATION")]),_v(" A list of URLs or the disk location of the git repositories to analyze, separated by spaces.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-r")])]),_v(" "),_c('li',[_v("Examples:\n"),_c('ul',[_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repos https://github.com/reposense/RepoSense.git")])]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repo https://github.com/reposense/RepoSense.git c:/myRepose/foo/bar")]),_v(": analyzes the two specified repos (one remote, one local) and generates one report containing details of both.")])])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Cannot be used with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--config")]),_v(". This flag takes precedence over "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--config")]),_v(".")])]),_v(" "),_c('h3',{attrs:{"id":"shallow-cloning-s"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--shallow-cloning")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-S")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#shallow-cloning-s","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--shallow-cloning")])]),_v(": Clones repositories using Git's shallow cloning functionality, which can significantly reduce the time taken to clone large repositories. However, the flag should not be used for smaller repositories where the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(".git")]),_v(" file is smaller than 500 MB, as it would create overhead.")]),_v(" "),_c('ul',[_c('li',[_v("Default: RepoSense does not clone repositories using Git's shallow cloning functionality.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-S")]),_v(" (uppercase S)")]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--shallow-cloning")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-S")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Cannot be used with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--last-modified-date")]),_v(". This may result in an incorrect last modified date.")])]),_v(" "),_c('h3',{attrs:{"id":"since-s"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-s")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#since-s","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since START_DATE")])]),_v(": Specifies the start date for the period to be analyzed.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("START_DATE")]),_v(" The first day of the period to be analyzed, in the format "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("DD/MM/YYYY")]),_v("."),_c('br'),_v("\nDefault: one month before the current date")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-s")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since 21/10/2017")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-s 21/10/2017")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("If the start date is not specified, only commits made one month before the end date (if specified) or the date of generating the report, will be captured and analyzed.")]),_v(" "),_c('li',[_v("If "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("d1")]),_v(" is specified as the start date ("),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since d1")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-s d1")]),_v("), then the program will search for the earliest commit date of all repositories and use that as the start date.")]),_v(" "),_c('li',[_v("If "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("d1")]),_v(" is specified together with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--period")]),_v(", then the program will warn that the date range being analyzed may be incorrect.")])])]),_v(" "),_c('h3',{attrs:{"id":"timezone-t"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--timezone")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-t")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#timezone-t","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--timezone ZONE_ID")])]),_v(": Indicates the timezone to be used for the analysis.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ZONE_ID")]),_v(" The timezone in the format "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ZONE_ID[±hh[mm]]")]),_v("."),_c('br'),_v("\nDefault: system's default timezone")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-t")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--timezone UTC+08")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-t UTC-1030")])])]),_v(" "),_c('h3',{attrs:{"id":"until-u"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--until")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-u")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#until-u","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--until END_DATE")])]),_v(": Specifies the end date of the analysis period.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("END_DATE")]),_v(" The last date of the period to be analyzed, in the format "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("DD/MM/YYYY")]),_v("."),_c('br'),_v("\nDefault: current date")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-u")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--until 21/10/2017")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-u 21/10/2017")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Note: If the end date is not specified, the date of generating the report will be taken as the end date.")])]),_v(" "),_c('h3',{attrs:{"id":"version-v"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--version")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-V")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#version-v","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--version")])]),_v(": Shows the version of RepoSense.")]),_v(" "),_c('ul',[_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-V")]),_v(" (upper case)")])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Cannot be used with any other flags. This flag takes precedence over all other flags other than "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--help")]),_v(".")])]),_v(" "),_c('h3',{attrs:{"id":"view-v"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--view")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-v")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#view-v","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--view [REPORT_FOLDER]")])]),_v(": Specifies that the report should be opened in the default browser.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("REPORT_FOLDER")]),_v(" Optional. If specified, no analysis will be performed and the report specified by the argument will be opened."),_c('br'),_v("\nDefault: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./reposense-report")])]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-v")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--view")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-v")])])])],1)])],1),_v(" "),_c('p')])])],1),_v(" "),_c('p'),_v(" "),_m(11),_v(" "),_m(12)],1),_v(" "),_c('overlay-source',{staticClass:"fixed-header-padding",attrs:{"id":"page-nav","tag-name":"nav","to":"page-nav"}},[_c('div',{staticClass:"nav-component slim-scroll"},[_c('overlay-source',{staticClass:"nav nav-pills flex-column my-0 small no-flex-wrap",attrs:{"id":"mb-page-nav","tag-name":"nav","to":"mb-page-nav"}},[_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#setting-up"}},[_v("Setting up‎")]),_v(" "),_c('nav',{staticClass:"nav nav-pills flex-column my-0 nested no-flex-wrap"},[_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#getting-the-code"}},[_v("Getting the code‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#setting-up-the-ide"}},[_v("Setting up the IDE‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#verifying-the-setup"}},[_v("Verifying the setup‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#before-you-start-coding"}},[_v("Before you start coding‎")])])])],1)])],1),_v(" "),_m(13)])} }; var pageVueStaticRenderFns = [function anonymous( ) { @@ -44,6 +44,6 @@ with(this){return _c('h2',{attrs:{"id":"before-you-start-coding"}},[_v("Before y with(this){return _c('p',[_v("... read the "),_c('a',{attrs:{"href":"/RepoSense/dg/workflow.html"}},[_v("Workflow")]),_v(" section.")])} },function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('small',[_v("["),_c('span',[_c('strong',[_v("Powered by")])]),_v(" "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"30"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.2")]),_v(", generated on Tue, 14 May 2024, 13:12:51 UTC]")])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('small',[_v("["),_c('span',[_c('strong',[_v("Powered by")])]),_v(" "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"30"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.2")]),_v(", generated on Thu, 16 May 2024, 22:31:25 UTC]")])])])} }]; \ No newline at end of file diff --git a/dg/styleGuides.html b/dg/styleGuides.html index 196d2da47d..2586d58039 100644 --- a/dg/styleGuides.html +++ b/dg/styleGuides.html @@ -128,7 +128,7 @@ class Foo { name: string; } -
    [Powered by MarkBind 5.5.2, generated on Tue, 14 May 2024, 13:12:51 UTC]
    +
    [Powered by MarkBind 5.5.2, generated on Thu, 16 May 2024, 22:31:25 UTC]
    diff --git a/dg/styleGuides.page-vue-render.js b/dg/styleGuides.page-vue-render.js index d844764662..71ba108cf0 100644 --- a/dg/styleGuides.page-vue-render.js +++ b/dg/styleGuides.page-vue-render.js @@ -1,13 +1,13 @@ var pageVueRenderFn = function anonymous( ) { -with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"fixed":""}},[_c('navbar',{attrs:{"type":"dark"},scopedSlots:_u([{key:"brand",fn:function(){return [_c('a',{staticClass:"navbar-brand",attrs:{"href":"/index.html","title":"Home"}},[_c('img',{attrs:{"width":"30px","src":"/favicon.ico"}})])]},proxy:true},{key:"right",fn:function(){return [_c('li',[_c('form',{staticClass:"navbar-form"},[_c('searchbar',{attrs:{"data":searchData,"placeholder":"Search","on-hit":searchCallback,"menu-align-right":""}})],1)])]},proxy:true}])},[_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/index.html"}},[_v("HOME")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/showcase.html"}},[_v("SHOWCASE")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/ug/index.html"}},[_v("USER GUIDE")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/dg/index.html"}},[_v("DEVELOPER GUIDE")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/about.html"}},[_v("ABOUT")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/contact.html"}},[_v("CONTACT")])]),_v(" "),_c('li',{attrs:{"tags":"dev"}},[_c('a',{staticClass:"nav-link",attrs:{"href":"https://reposense.org","target":"_blank"}},[_c('span',[_c('span',{staticClass:"fas fa-external-link-alt",attrs:{"aria-hidden":"true"}}),_v(" PRODUCTION SITE")])])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"https://github.com/RepoSense/reposense","target":"_blank"}},[_c('span',[_c('span',{staticClass:"fab fa-github",attrs:{"aria-hidden":"true"}})])])])])],1),_v(" "),_c('div',{attrs:{"id":"flex-body"}},[_c('overlay-source',{staticClass:"fixed-header-padding",attrs:{"id":"site-nav","tag-name":"nav","to":"site-nav"}},[_c('div',{staticClass:"site-nav-top"},[_c('div',{staticClass:"font-weight-bold mb-2",staticStyle:{"font-size":"1.25rem"}},[_c('span',[_c('strong',[_c('strong',[_v("DEVELOPER GUIDE")])])])])]),_v(" "),_c('div',{staticClass:"nav-component slim-scroll"},[_c('div',[_c('site-nav',[_c('overlay-source',{staticClass:"site-nav-list site-nav-list-root",attrs:{"tag-name":"ul","to":"mb-site-nav"}},[_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/index.html"}},[_c('strong',[_v("Contributing")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/settingUp.html"}},[_c('strong',[_v("Setting up")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/learningBasics.html"}},[_c('strong',[_v("Learning the basics")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/workflow.html"}},[_c('strong',[_v("Workflow")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('strong',[_v("Design and implementation")]),_v(" "),_c('div',{staticClass:"site-nav-dropdown-btn-container"},[_c('i',{staticClass:"site-nav-dropdown-btn-icon site-nav-rotate-icon",attrs:{"onclick":"handleSiteNavClick(this.parentNode.parentNode, false); event.stopPropagation();"}},[_c('span',{staticClass:"glyphicon glyphicon-menu-down",attrs:{"aria-hidden":"true"}})])])]),_c('ul',{staticClass:"site-nav-dropdown-container site-nav-dropdown-container-open site-nav-list"},[_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/architecture.html"}},[_v("Architecture")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/report.html"}},[_v("HTML report")])])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/projectManagement.html"}},[_c('strong',[_v("Project management")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/devOpsGuide.html"}},[_c('strong',[_v("DevOps guide")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('strong',[_v("Appendices")]),_v(" "),_c('div',{staticClass:"site-nav-dropdown-btn-container"},[_c('i',{staticClass:"site-nav-dropdown-btn-icon site-nav-rotate-icon",attrs:{"onclick":"handleSiteNavClick(this.parentNode.parentNode, false); event.stopPropagation();"}},[_c('span',{staticClass:"glyphicon glyphicon-menu-down",attrs:{"aria-hidden":"true"}})])])]),_c('ul',{staticClass:"site-nav-dropdown-container site-nav-dropdown-container-open site-nav-list"},[_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/cli.html"}},[_v("CLI syntax reference")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/styleGuides.html"}},[_v("Style guides")])])])])])])],1)],1)])]),_v(" "),_m(0)],1),_v(" "),_m(1)])} +with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"fixed":""}},[_c('navbar',{attrs:{"type":"dark"},scopedSlots:_u([{key:"brand",fn:function(){return [_c('a',{staticClass:"navbar-brand",attrs:{"href":"/index.html","title":"Home"}},[_c('img',{attrs:{"width":"30px","src":"/favicon.ico"}})])]},proxy:true},{key:"right",fn:function(){return [_c('li',[_c('form',{staticClass:"navbar-form"},[_c('searchbar',{attrs:{"data":searchData,"placeholder":"Search","on-hit":searchCallback,"menu-align-right":""}})],1)])]},proxy:true}])},[_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/index.html"}},[_v("HOME")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/showcase.html"}},[_v("SHOWCASE")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/ug/index.html"}},[_v("USER GUIDE")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/dg/index.html"}},[_v("DEVELOPER GUIDE")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/about.html"}},[_v("ABOUT")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/contact.html"}},[_v("CONTACT")])]),_v(" "),_c('li',{attrs:{"tags":"dev"}},[_c('a',{staticClass:"nav-link",attrs:{"href":"https://reposense.org","target":"_blank"}},[_c('span',[_c('span',{staticClass:"fas fa-external-link-alt",attrs:{"aria-hidden":"true"}}),_v(" PRODUCTION SITE")])])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"https://github.com/RepoSense/reposense","target":"_blank"}},[_c('span',[_c('span',{staticClass:"fab fa-github",attrs:{"aria-hidden":"true"}})])])])])],1),_v(" "),_c('div',{attrs:{"id":"flex-body"}},[_c('overlay-source',{staticClass:"fixed-header-padding",attrs:{"id":"site-nav","tag-name":"nav","to":"site-nav"}},[_c('div',{staticClass:"site-nav-top"},[_c('div',{staticClass:"font-weight-bold mb-2",staticStyle:{"font-size":"1.25rem"}},[_c('span',[_c('strong',[_c('strong',[_v("DEVELOPER GUIDE")])])])])]),_v(" "),_c('div',{staticClass:"nav-component slim-scroll"},[_c('div',[_c('site-nav',[_c('overlay-source',{staticClass:"site-nav-list site-nav-list-root",attrs:{"tag-name":"ul","to":"mb-site-nav"}},[_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/index.html"}},[_c('strong',[_v("Contributing")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/settingUp.html"}},[_c('strong',[_v("Setting up")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/learningBasics.html"}},[_c('strong',[_v("Learning the basics")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/workflow.html"}},[_c('strong',[_v("Workflow")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('strong',[_v("Design and implementation")]),_v(" "),_c('div',{staticClass:"site-nav-dropdown-btn-container"},[_c('i',{staticClass:"site-nav-dropdown-btn-icon site-nav-rotate-icon",attrs:{"onclick":"handleSiteNavClick(this.parentNode.parentNode, false); event.stopPropagation();"}},[_c('span',{staticClass:"glyphicon glyphicon-menu-down",attrs:{"aria-hidden":"true"}})])])]),_c('ul',{staticClass:"site-nav-dropdown-container site-nav-dropdown-container-open site-nav-list"},[_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/architecture.html"}},[_v("Architecture")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/report.html"}},[_v("HTML report")])])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/projectManagement.html"}},[_c('strong',[_v("Project management")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/devOpsGuide.html"}},[_c('strong',[_v("DevOps guide")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('strong',[_v("Appendices")]),_v(" "),_c('div',{staticClass:"site-nav-dropdown-btn-container"},[_c('i',{staticClass:"site-nav-dropdown-btn-icon site-nav-rotate-icon",attrs:{"onclick":"handleSiteNavClick(this.parentNode.parentNode, false); event.stopPropagation();"}},[_c('span',{staticClass:"glyphicon glyphicon-menu-down",attrs:{"aria-hidden":"true"}})])])]),_c('ul',{staticClass:"site-nav-dropdown-container site-nav-dropdown-container-open site-nav-list"},[_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/cli.html"}},[_v("CLI syntax reference")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/styleGuides.html"}},[_v("Style guides")])])])])])])],1)],1)])]),_v(" "),_m(0),_v(" "),_c('overlay-source',{staticClass:"fixed-header-padding",attrs:{"id":"page-nav","tag-name":"nav","to":"page-nav"}},[_c('div',{staticClass:"nav-component slim-scroll"})])],1),_v(" "),_m(1)])} }; var pageVueStaticRenderFns = [function anonymous( ) { with(this){return _c('div',{staticClass:"fixed-header-padding",attrs:{"id":"content-wrapper"}},[_c('h1',{staticClass:"display-4",attrs:{"id":"appendix-style-guides"}},[_c('span',[_v("Appendix: Style guides")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#appendix-style-guides","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{staticClass:"lead"},[_c('p',[_v("Our coding standards are mostly based on those at "),_c('a',{attrs:{"href":"https://se-education.org/guides"}},[_v("se-education.org/guides")]),_v(".")])]),_v(" "),_c('ul',[_c('li',[_c('a',{attrs:{"href":"https://se-education.org/guides/conventions/css.html"}},[_c('strong',[_v("CSS")]),_v(" coding standard")])]),_v(" "),_c('li',[_c('a',{attrs:{"href":"https://se-education.org/guides/conventions/files.html"}},[_c('strong',[_v("Files/folders")]),_v(" naming conventions")])]),_v(" "),_c('li',[_c('a',{attrs:{"href":"https://se-education.org/guides/conventions/html.html"}},[_c('strong',[_v("HTML")]),_v(" coding standard")])]),_v(" "),_c('li',[_c('a',{attrs:{"href":"https://se-education.org/guides/conventions/markdown.html"}},[_c('strong',[_v("Markdown/MarkBind")]),_v(" coding standard")])]),_v(" "),_c('li',[_c('a',{attrs:{"href":"https://se-education.org/guides/conventions/java/index.html"}},[_c('strong',[_v("Java")]),_v(" coding standard")])]),_v(" "),_c('li',[_c('a',{attrs:{"href":"https://se-education.org/guides/conventions/javascript.html"}},[_c('strong',[_v("JavaScript")]),_v(" coding standard")])]),_v(" "),_c('li',[_c('strong',[_v("TypeScript")]),_v(": In addition to the JavaScript coding standard, follow the "),_c('a',{attrs:{"href":"https://typescript-eslint.io/rules/"}},[_c('strong',[_v("recommended ESLint rules")])]),_v(" and the formatting rules "),_c('a',{attrs:{"href":"#typescript-specific-formatting"}},[_v("described below")]),_v(".")]),_v(" "),_c('li',[_c('strong',[_v("Vue Components")]),_v(": Follow the "),_c('a',{attrs:{"href":"https://vuejs.org/style-guide/"}},[_c('strong',[_v("Vue style guide")])]),_v(", up to the "),_c('strong',[_v("Recommended")]),_v(" section.")]),_v(" "),_c('li',[_c('strong',[_v("Documentation")]),_v(": Follow the "),_c('a',{attrs:{"href":"https://developers.google.com/style"}},[_c('strong',[_v("Google developer documentation style guide")])]),_v(".")])]),_v(" "),_c('h2',{attrs:{"id":"note-on-ternary-operators"}},[_v("Note on Ternary Operators:"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#note-on-ternary-operators","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Ternary operators can be used to shorten if-else blocks such as this:")]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"hljs java"}},[_c('span',[_v("LocalDateTime min = ARBITRARY_FIRST_COMMIT_DATE_UTC.withZoneSameInstant(zoneId).toLocalDateTime();\n")]),_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-keyword"}},[_v("if")]),_v(" (!commitInfos.isEmpty()) {\n")]),_c('span',[_v(" min = commitInfos.get("),_c('span',{pre:true,attrs:{"class":"hljs-number"}},[_v("0")]),_v(").getTime();\n")]),_c('span',[_v("}\n")]),_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-keyword"}},[_v("return")]),_v(" min;\n")])])]),_c('p',[_v("The result would look something like this:")]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"hljs java"}},[_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-keyword"}},[_v("return")]),_v(" (commitInfos.isEmpty())\n")]),_c('span',[_v(" ? ARBITRARY_FIRST_COMMIT_DATE_UTC.withZoneSameInstant(zoneId).toLocalDateTime()\n")]),_c('span',[_v(" : commitInfos.get("),_c('span',{pre:true,attrs:{"class":"hljs-number"}},[_v("0")]),_v(").getTime();\n")])])]),_c('p',[_v("To preserve readability, it is recommended that if-else blocks should only be\nconverted to ternary operators if the resultant code can be kept at most 3 lines long\n(in accordance to the coding standard).")]),_v(" "),_c('h2',{attrs:{"id":"additional-javadoc-requirements"}},[_v("Additional Javadoc requirements:"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#additional-javadoc-requirements","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("In addition to what has been mentioned in the "),_c('a',{attrs:{"href":"https://se-education.org/guides/conventions/java/index.html"}},[_c('strong',[_v("Java")]),_v(" coding standard (SE-EDU)")]),_v(" and "),_c('a',{attrs:{"href":"https://google.github.io/styleguide/javaguide.html"}},[_c('strong',[_v("Google Java Style Guide")])]),_v(", we also stipulate the following standards for Javadoc:")]),_v(" "),_c('ul',[_c('li',[_v("If Javadoc is written for a method, all input parameters should be described in the Javadoc, either in the description with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("@code tags")]),_v(" or through "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("@param")]),_v(" block tags.\n"),_c('ul',[_c('li',[_v("If "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("@param")]),_v(" block tags are used, they must be used for all parameters.")]),_v(" "),_c('li',[_v("This is not necessary (although still recommended) for methods with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("@Override")]),_v(" annotations if Javadoc is used. However, if the method that is being overriden is part of your code and has Javadoc, all parameters must be described.")])])])]),_v(" "),_c('p',[_v("Negative Examples:")]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"hljs java"}},[_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-comment"}},[_v("// Not okay (Only mentions zoneId parameter):")]),_v("\n")]),_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-comment"}},[_v("/**")]),_v("\n")]),_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-comment"}},[_v(" * Returns a {"),_c('span',{pre:true,attrs:{"class":"hljs-doctag"}},[_v("@link")]),_v(" LocalDateTime} object adjusted for timezone given by {"),_c('span',{pre:true,attrs:{"class":"hljs-doctag"}},[_v("@code")]),_v(" zoneId}.")]),_v("\n")]),_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-comment"}},[_v(" */")]),_v("\n")]),_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-function"}},[_c('span',{pre:true,attrs:{"class":"hljs-keyword"}},[_v("public")]),_v(" LocalDateTime "),_c('span',{pre:true,attrs:{"class":"hljs-title"}},[_v("adjustTimeZone")]),_c('span',{pre:true,attrs:{"class":"hljs-params"}},[_v("(LocalDateTime sinceDate, ZoneId zoneId)")]),_v(" ")]),_v("{\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-comment"}},[_v("//Code here")]),_v("\n")]),_c('span',[_v("}\n")]),_c('span',[_v("\n")]),_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-comment"}},[_v("// Not okay (@param tag used only for zoneId)")]),_v("\n")]),_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-comment"}},[_v("/**")]),_v("\n")]),_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-comment"}},[_v(" * Returns a {"),_c('span',{pre:true,attrs:{"class":"hljs-doctag"}},[_v("@link")]),_v(" LocalDateTime} object by adjusting {"),_c('span',{pre:true,attrs:{"class":"hljs-doctag"}},[_v("@code")]),_v(" sinceDate}")]),_v("\n")]),_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-comment"}},[_v(" * to the timezone given by {"),_c('span',{pre:true,attrs:{"class":"hljs-doctag"}},[_v("@code")]),_v(" zoneId}.")]),_v("\n")]),_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-comment"}},[_v(" *")]),_v("\n")]),_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-comment"}},[_v(" * "),_c('span',{pre:true,attrs:{"class":"hljs-doctag"}},[_v("@param")]),_v(" zoneId The timezone ID to adjust the sinceDate to.")]),_v("\n")]),_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-comment"}},[_v(" */")]),_v("\n")]),_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-function"}},[_c('span',{pre:true,attrs:{"class":"hljs-keyword"}},[_v("public")]),_v(" LocalDateTime "),_c('span',{pre:true,attrs:{"class":"hljs-title"}},[_v("adjustTimeZone")]),_c('span',{pre:true,attrs:{"class":"hljs-params"}},[_v("(LocalDateTime sinceDate, ZoneId zoneId)")]),_v(" ")]),_v("{\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-comment"}},[_v("//Code here")]),_v("\n")]),_c('span',[_v("}\n")])])]),_c('p',[_v("Positive Example #1:")]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"hljs java"}},[_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-comment"}},[_v("// Okay (No @param tags):")]),_v("\n")]),_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-comment"}},[_v("/**")]),_v("\n")]),_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-comment"}},[_v(" * Returns a {"),_c('span',{pre:true,attrs:{"class":"hljs-doctag"}},[_v("@link")]),_v(" LocalDateTime} object by adjusting {"),_c('span',{pre:true,attrs:{"class":"hljs-doctag"}},[_v("@code")]),_v(" sinceDate}")]),_v("\n")]),_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-comment"}},[_v(" * to the timezone given by {"),_c('span',{pre:true,attrs:{"class":"hljs-doctag"}},[_v("@code")]),_v(" zoneId}.")]),_v("\n")]),_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-comment"}},[_v(" */")]),_v("\n")]),_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-function"}},[_c('span',{pre:true,attrs:{"class":"hljs-keyword"}},[_v("public")]),_v(" LocalDateTime "),_c('span',{pre:true,attrs:{"class":"hljs-title"}},[_v("adjustTimeZone")]),_c('span',{pre:true,attrs:{"class":"hljs-params"}},[_v("(LocalDateTime sinceDate, ZoneId zoneId)")]),_v(" ")]),_v("{\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-comment"}},[_v("//Code here")]),_v("\n")]),_c('span',[_v("}\n")])])]),_c('p',[_v("Positive Example #2:")]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"hljs java"}},[_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-comment"}},[_v("// Okay (@param tags used for all inputs):")]),_v("\n")]),_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-comment"}},[_v("/**")]),_v("\n")]),_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-comment"}},[_v(" * Returns a {"),_c('span',{pre:true,attrs:{"class":"hljs-doctag"}},[_v("@link")]),_v(" LocalDateTime} object by adjusting {"),_c('span',{pre:true,attrs:{"class":"hljs-doctag"}},[_v("@code")]),_v(" sinceDate}")]),_v("\n")]),_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-comment"}},[_v(" * to the timezone given by {"),_c('span',{pre:true,attrs:{"class":"hljs-doctag"}},[_v("@code")]),_v(" zoneId}.")]),_v("\n")]),_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-comment"}},[_v(" *")]),_v("\n")]),_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-comment"}},[_v(" * "),_c('span',{pre:true,attrs:{"class":"hljs-doctag"}},[_v("@param")]),_v(" sinceDate The date prior to the timezone conversion.")]),_v("\n")]),_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-comment"}},[_v(" * "),_c('span',{pre:true,attrs:{"class":"hljs-doctag"}},[_v("@param")]),_v(" zoneId The timezone ID to adjust the sinceDate to.")]),_v("\n")]),_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-comment"}},[_v(" */")]),_v("\n")]),_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-function"}},[_c('span',{pre:true,attrs:{"class":"hljs-keyword"}},[_v("public")]),_v(" LocalDateTime "),_c('span',{pre:true,attrs:{"class":"hljs-title"}},[_v("adjustTimeZone")]),_c('span',{pre:true,attrs:{"class":"hljs-params"}},[_v("(LocalDateTime sinceDate, ZoneId zoneId)")]),_v(" ")]),_v("{\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-comment"}},[_v("//Code here")]),_v("\n")]),_c('span',[_v("}\n")])])]),_c('ul',[_c('li',[_v("Within the main code, if an exception is thrown in a method (both header and body) for which Javadoc is written, a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("@throws")]),_v(" tag must be used to describe how the exception is likely to arise.\n"),_c('ul',[_c('li',[_v("This requirement does not apply to test code.")]),_v(" "),_c('li',[_v("One "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("@throws")]),_v(" tag per unique exception.")]),_v(" "),_c('li',[_v("The order of exceptions in the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("@throws")]),_v(" tag block should match that of the method's "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("throws")]),_v(" statement.")])])])]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"hljs java"}},[_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-comment"}},[_v("// Not okay (order of exceptions in tag block and method signature do not match):")]),_v("\n")]),_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-comment"}},[_v("/**")]),_v("\n")]),_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-comment"}},[_v(" * Returns a {"),_c('span',{pre:true,attrs:{"class":"hljs-doctag"}},[_v("@link")]),_v(" LocalDateTime} object from {"),_c('span',{pre:true,attrs:{"class":"hljs-doctag"}},[_v("@code")]),_v(" dateString}.")]),_v("\n")]),_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-comment"}},[_v(" *")]),_v("\n")]),_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-comment"}},[_v(" * "),_c('span',{pre:true,attrs:{"class":"hljs-doctag"}},[_v("@throws")]),_v(" ParseException if {"),_c('span',{pre:true,attrs:{"class":"hljs-doctag"}},[_v("@code")]),_v(" dateString} cannot be parsed.")]),_v("\n")]),_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-comment"}},[_v(" * "),_c('span',{pre:true,attrs:{"class":"hljs-doctag"}},[_v("@throws")]),_v(" NullPointerException if {"),_c('span',{pre:true,attrs:{"class":"hljs-doctag"}},[_v("@code")]),_v(" dateString} is null.")]),_v("\n")]),_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-comment"}},[_v(" */")]),_v("\n")]),_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-function"}},[_c('span',{pre:true,attrs:{"class":"hljs-keyword"}},[_v("public")]),_v(" LocalDateTime "),_c('span',{pre:true,attrs:{"class":"hljs-title"}},[_v("parseDate")]),_c('span',{pre:true,attrs:{"class":"hljs-params"}},[_v("(String dateString)")]),_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-keyword"}},[_v("throws")]),_v(" NullPointerException, ParseException ")]),_v("{\n")]),_c('span',[_v(" String trimmedString = dateString.toUpperCase(); "),_c('span',{pre:true,attrs:{"class":"hljs-comment"}},[_v("// NullPointerException may happen here.")]),_v("\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-comment"}},[_v("// Code here")]),_v("\n")]),_c('span',[_v("}\n")]),_c('span',[_v("\n")]),_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-comment"}},[_v("// Should be:")]),_v("\n")]),_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-comment"}},[_v("/**")]),_v("\n")]),_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-comment"}},[_v(" * Returns a {"),_c('span',{pre:true,attrs:{"class":"hljs-doctag"}},[_v("@link")]),_v(" LocalDateTime} object from {"),_c('span',{pre:true,attrs:{"class":"hljs-doctag"}},[_v("@code")]),_v(" dateString}.")]),_v("\n")]),_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-comment"}},[_v(" *")]),_v("\n")]),_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-comment"}},[_v(" * "),_c('span',{pre:true,attrs:{"class":"hljs-doctag"}},[_v("@throws")]),_v(" NullPointerException if {"),_c('span',{pre:true,attrs:{"class":"hljs-doctag"}},[_v("@code")]),_v(" dateString} is null.")]),_v("\n")]),_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-comment"}},[_v(" * "),_c('span',{pre:true,attrs:{"class":"hljs-doctag"}},[_v("@throws")]),_v(" ParseException if {"),_c('span',{pre:true,attrs:{"class":"hljs-doctag"}},[_v("@code")]),_v(" dateString} cannot be parsed.")]),_v("\n")]),_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-comment"}},[_v(" */")]),_v("\n")]),_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-function"}},[_c('span',{pre:true,attrs:{"class":"hljs-keyword"}},[_v("public")]),_v(" LocalDateTime "),_c('span',{pre:true,attrs:{"class":"hljs-title"}},[_v("parseDate")]),_c('span',{pre:true,attrs:{"class":"hljs-params"}},[_v("(String dateString)")]),_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-keyword"}},[_v("throws")]),_v(" NullPointerException, ParseException ")]),_v("{\n")]),_c('span',[_v(" String trimmedString = dateString.toUpperCase(); "),_c('span',{pre:true,attrs:{"class":"hljs-comment"}},[_v("// NullPointerException may happen here.")]),_v("\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-comment"}},[_v("// Code here")]),_v("\n")]),_c('span',[_v("}\n")])])]),_c('h2',{attrs:{"id":"typescript-specific-formatting"}},[_v("TypeScript specific formatting"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#typescript-specific-formatting","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("For TypeScript specific code, such as within an "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("interface")]),_v(" or type annotations, we also stipulate the following standards:")]),_v(" "),_c('ul',[_c('li',[_v("Use semicolons as delimiters for TypeScript interfaces and types.")])]),_v(" "),_c('p',[_v("Negative Examples:")]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"hljs typescript"}},[_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-comment"}},[_v("// missing semicolon delimiter")]),_v("\n")]),_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-keyword"}},[_v("interface")]),_v(" Foo {\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("name")]),_v(": "),_c('span',{pre:true,attrs:{"class":"hljs-built_in"}},[_v("string")]),_v("\n")]),_c('span',[_v(" greet(): "),_c('span',{pre:true,attrs:{"class":"hljs-built_in"}},[_v("string")]),_v("\n")]),_c('span',[_v("}\n")]),_c('span',[_v("\n")]),_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-comment"}},[_v("// using incorrect delimiter")]),_v("\n")]),_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-keyword"}},[_v("interface")]),_v(" Foo {\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("name")]),_v(": "),_c('span',{pre:true,attrs:{"class":"hljs-built_in"}},[_v("string")]),_v(",\n")]),_c('span',[_v(" greet(): "),_c('span',{pre:true,attrs:{"class":"hljs-built_in"}},[_v("string")]),_v(",\n")]),_c('span',[_v("}\n")])])]),_c('p',[_v("Positive Example:")]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"hljs typescript"}},[_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-comment"}},[_v("// semicolon delimiter")]),_v("\n")]),_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-keyword"}},[_v("interface")]),_v(" Foo {\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("name")]),_v(": "),_c('span',{pre:true,attrs:{"class":"hljs-built_in"}},[_v("string")]),_v(";\n")]),_c('span',[_v(" greet(): "),_c('span',{pre:true,attrs:{"class":"hljs-built_in"}},[_v("string")]),_v(";\n")]),_c('span',[_v("}\n")])])]),_c('ul',[_c('li',[_v("For type annotations, use a space after but not before.")])]),_v(" "),_c('p',[_v("Negative Examples:")]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"hljs typescript"}},[_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-keyword"}},[_v("let")]),_v(" foo:"),_c('span',{pre:true,attrs:{"class":"hljs-built_in"}},[_v("string")]),_v(" = "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"bar\"")]),_v(";\n")]),_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-keyword"}},[_v("let")]),_v(" foo :"),_c('span',{pre:true,attrs:{"class":"hljs-built_in"}},[_v("string")]),_v(" = "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"bar\"")]),_v(";\n")]),_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-keyword"}},[_v("let")]),_v(" foo : "),_c('span',{pre:true,attrs:{"class":"hljs-built_in"}},[_v("string")]),_v(" = "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"bar\"")]),_v(";\n")]),_c('span',[_v("\n")]),_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-function"}},[_c('span',{pre:true,attrs:{"class":"hljs-keyword"}},[_v("function")]),_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-title"}},[_v("foo")]),_v("("),_c('span',{pre:true,attrs:{"class":"hljs-params"}}),_v("):"),_c('span',{pre:true,attrs:{"class":"hljs-title"}},[_v("string")]),_v(" ")]),_v("{}\n")]),_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-function"}},[_c('span',{pre:true,attrs:{"class":"hljs-keyword"}},[_v("function")]),_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-title"}},[_v("foo")]),_v("("),_c('span',{pre:true,attrs:{"class":"hljs-params"}}),_v(") :"),_c('span',{pre:true,attrs:{"class":"hljs-title"}},[_v("string")]),_v(" ")]),_v("{}\n")]),_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-function"}},[_c('span',{pre:true,attrs:{"class":"hljs-keyword"}},[_v("function")]),_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-title"}},[_v("foo")]),_v("("),_c('span',{pre:true,attrs:{"class":"hljs-params"}}),_v(") : "),_c('span',{pre:true,attrs:{"class":"hljs-title"}},[_v("string")]),_v(" ")]),_v("{}\n")]),_c('span',[_v("\n")]),_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-class"}},[_c('span',{pre:true,attrs:{"class":"hljs-keyword"}},[_v("class")]),_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-title"}},[_v("Foo")]),_v(" ")]),_v("{\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("name")]),_v(":"),_c('span',{pre:true,attrs:{"class":"hljs-built_in"}},[_v("string")]),_v(";\n")]),_c('span',[_v("}\n")]),_c('span',[_v("\n")]),_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-class"}},[_c('span',{pre:true,attrs:{"class":"hljs-keyword"}},[_v("class")]),_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-title"}},[_v("Foo")]),_v(" ")]),_v("{\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("name")]),_v(" :"),_c('span',{pre:true,attrs:{"class":"hljs-built_in"}},[_v("string")]),_v(";\n")]),_c('span',[_v("}\n")]),_c('span',[_v("\n")]),_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-class"}},[_c('span',{pre:true,attrs:{"class":"hljs-keyword"}},[_v("class")]),_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-title"}},[_v("Foo")]),_v(" ")]),_v("{\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("name")]),_v(" : "),_c('span',{pre:true,attrs:{"class":"hljs-built_in"}},[_v("string")]),_v(";\n")]),_c('span',[_v("}\n")])])]),_c('p',[_v("Positive Examples:")]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"hljs typescript"}},[_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-keyword"}},[_v("let")]),_v(" foo: "),_c('span',{pre:true,attrs:{"class":"hljs-built_in"}},[_v("string")]),_v(" = "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"bar\"")]),_v(";\n")]),_c('span',[_v("\n")]),_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-function"}},[_c('span',{pre:true,attrs:{"class":"hljs-keyword"}},[_v("function")]),_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-title"}},[_v("foo")]),_v("("),_c('span',{pre:true,attrs:{"class":"hljs-params"}}),_v("): "),_c('span',{pre:true,attrs:{"class":"hljs-title"}},[_v("string")]),_v(" ")]),_v("{}\n")]),_c('span',[_v("\n")]),_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-class"}},[_c('span',{pre:true,attrs:{"class":"hljs-keyword"}},[_v("class")]),_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-title"}},[_v("Foo")]),_v(" ")]),_v("{\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("name")]),_v(": "),_c('span',{pre:true,attrs:{"class":"hljs-built_in"}},[_v("string")]),_v(";\n")]),_c('span',[_v("}\n")])])])])} },function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('small',[_v("["),_c('span',[_c('strong',[_v("Powered by")])]),_v(" "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"30"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.2")]),_v(", generated on Tue, 14 May 2024, 13:12:51 UTC]")])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('small',[_v("["),_c('span',[_c('strong',[_v("Powered by")])]),_v(" "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"30"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.2")]),_v(", generated on Thu, 16 May 2024, 22:31:25 UTC]")])])])} }]; \ No newline at end of file diff --git a/dg/workflow.html b/dg/workflow.html index 01f516aed4..035630a6f2 100644 --- a/dg/workflow.html +++ b/dg/workflow.html @@ -11,7 +11,7 @@ - +

    Workflow

    Our workflow is mostly based on the guidelines given at se-education.org/guides.

    To submit a PR, follow this guide, but note the following:

    • As we squash the commits when merging a PR, there is no need to follow a strict commit organization or write elaborate commit messages for each commit.
      @@ -22,7 +22,7 @@ Cypress Test Runner
    • Read Cypress's Documentation to familiarize yourself with its syntax and Cypress's debugging guide to tackle problems with your tests.

      Note that it is compulsory to add tests for the new front-end changes that you made to prevent regression bugs, except for trivial changes that are unlikely to cause any regression or other situations where testing does not apply to the change.

      Running tests

      To run all tests locally, run gradlew frontendTest.

      • Using the above command, tests are run on the CLI in a headless browser without the report being displayed.
      • To run tests in a headed browser, run gradlew cypress then select the test file(s) in the Cypress GUI as shown above.

      If you encountered an invalid browser error, ensure that you have Chrome installed in the default installation directory. Otherwise, follow the instructions here to create symbolic links so Cypress can locate Chrome in your system.

      Testing (back-end)

      The back-end tests can be found at [project root]/systemtest and [project root]/test.

      Running tests

      To run all the system tests, run gradlew systemtest.

      To run all the unit and integration tests, run gradlew test.

      Writing documentation

      This project uses MarkBind for documentation. Follow this tutorial to learn how to use MarkBind for updating project documentation.

      To show some content only in the , add the tags="production" attribute to the HTML element enclosing the content. Similarly, tags="dev" will make the content appear only in the .

      <span tags="production">This will appear in the production website only.</span>
       <span tags="dev">This will appear in the dev website only.</span>
       This will appear in both sites.
      -
    [Powered by MarkBind 5.5.2, generated on Tue, 14 May 2024, 13:12:51 UTC]
    +
    [Powered by MarkBind 5.5.2, generated on Thu, 16 May 2024, 22:31:25 UTC]
    diff --git a/dg/workflow.page-vue-render.js b/dg/workflow.page-vue-render.js index d5d8b472ee..3d4a63333e 100644 --- a/dg/workflow.page-vue-render.js +++ b/dg/workflow.page-vue-render.js @@ -1,7 +1,7 @@ var pageVueRenderFn = function anonymous( ) { -with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"fixed":""}},[_c('navbar',{attrs:{"type":"dark"},scopedSlots:_u([{key:"brand",fn:function(){return [_c('a',{staticClass:"navbar-brand",attrs:{"href":"/index.html","title":"Home"}},[_c('img',{attrs:{"width":"30px","src":"/favicon.ico"}})])]},proxy:true},{key:"right",fn:function(){return [_c('li',[_c('form',{staticClass:"navbar-form"},[_c('searchbar',{attrs:{"data":searchData,"placeholder":"Search","on-hit":searchCallback,"menu-align-right":""}})],1)])]},proxy:true}])},[_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/index.html"}},[_v("HOME")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/showcase.html"}},[_v("SHOWCASE")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/ug/index.html"}},[_v("USER GUIDE")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/dg/index.html"}},[_v("DEVELOPER GUIDE")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/about.html"}},[_v("ABOUT")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/contact.html"}},[_v("CONTACT")])]),_v(" "),_c('li',{attrs:{"tags":"dev"}},[_c('a',{staticClass:"nav-link",attrs:{"href":"https://reposense.org","target":"_blank"}},[_c('span',[_c('span',{staticClass:"fas fa-external-link-alt",attrs:{"aria-hidden":"true"}}),_v(" PRODUCTION SITE")])])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"https://github.com/RepoSense/reposense","target":"_blank"}},[_c('span',[_c('span',{staticClass:"fab fa-github",attrs:{"aria-hidden":"true"}})])])])])],1),_v(" "),_c('div',{attrs:{"id":"flex-body"}},[_c('overlay-source',{staticClass:"fixed-header-padding",attrs:{"id":"site-nav","tag-name":"nav","to":"site-nav"}},[_c('div',{staticClass:"site-nav-top"},[_c('div',{staticClass:"font-weight-bold mb-2",staticStyle:{"font-size":"1.25rem"}},[_c('span',[_c('strong',[_c('strong',[_v("DEVELOPER GUIDE")])])])])]),_v(" "),_c('div',{staticClass:"nav-component slim-scroll"},[_c('div',[_c('site-nav',[_c('overlay-source',{staticClass:"site-nav-list site-nav-list-root",attrs:{"tag-name":"ul","to":"mb-site-nav"}},[_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/index.html"}},[_c('strong',[_v("Contributing")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/settingUp.html"}},[_c('strong',[_v("Setting up")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/learningBasics.html"}},[_c('strong',[_v("Learning the basics")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/workflow.html"}},[_c('strong',[_v("Workflow")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('strong',[_v("Design and implementation")]),_v(" "),_c('div',{staticClass:"site-nav-dropdown-btn-container"},[_c('i',{staticClass:"site-nav-dropdown-btn-icon site-nav-rotate-icon",attrs:{"onclick":"handleSiteNavClick(this.parentNode.parentNode, false); event.stopPropagation();"}},[_c('span',{staticClass:"glyphicon glyphicon-menu-down",attrs:{"aria-hidden":"true"}})])])]),_c('ul',{staticClass:"site-nav-dropdown-container site-nav-dropdown-container-open site-nav-list"},[_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/architecture.html"}},[_v("Architecture")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/report.html"}},[_v("HTML report")])])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/projectManagement.html"}},[_c('strong',[_v("Project management")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/devOpsGuide.html"}},[_c('strong',[_v("DevOps guide")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('strong',[_v("Appendices")]),_v(" "),_c('div',{staticClass:"site-nav-dropdown-btn-container"},[_c('i',{staticClass:"site-nav-dropdown-btn-icon site-nav-rotate-icon",attrs:{"onclick":"handleSiteNavClick(this.parentNode.parentNode, false); event.stopPropagation();"}},[_c('span',{staticClass:"glyphicon glyphicon-menu-down",attrs:{"aria-hidden":"true"}})])])]),_c('ul',{staticClass:"site-nav-dropdown-container site-nav-dropdown-container-open site-nav-list"},[_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/cli.html"}},[_v("CLI syntax reference")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/styleGuides.html"}},[_v("Style guides")])])])])])])],1)],1)])]),_v(" "),_c('div',{staticClass:"fixed-header-padding",attrs:{"id":"content-wrapper"}},[_m(0),_v(" "),_m(1),_v(" "),_m(2),_v(" "),_m(3),_v(" "),_m(4),_v(" "),_m(5),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("The issues for first timers usually have guidance provided in the comment or have linked pull requests from previous contributors. You can refer to them for implementation details.")])]),_v(" "),_m(6),_v(" "),_m(7),_v(" "),_m(8),_v(" "),_c('div',{staticClass:"indented-level2"},[_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('span',[_c('span',{staticClass:"glyphicon glyphicon-log-in",attrs:{"aria-hidden":"true"}})]),_v(" Appendix: Coding Standards")])]},proxy:true}])},[_v(" "),_c('div',[_c('h1',{staticClass:"display-4",attrs:{"id":"appendix-style-guides"}},[_c('span',[_v("Appendix: Style guides")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#appendix-style-guides","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{staticClass:"lead"},[_c('p',[_v("Our coding standards are mostly based on those at "),_c('a',{attrs:{"href":"https://se-education.org/guides"}},[_v("se-education.org/guides")]),_v(".")])]),_v(" "),_c('ul',[_c('li',[_c('a',{attrs:{"href":"https://se-education.org/guides/conventions/css.html"}},[_c('strong',[_v("CSS")]),_v(" coding standard")])]),_v(" "),_c('li',[_c('a',{attrs:{"href":"https://se-education.org/guides/conventions/files.html"}},[_c('strong',[_v("Files/folders")]),_v(" naming conventions")])]),_v(" "),_c('li',[_c('a',{attrs:{"href":"https://se-education.org/guides/conventions/html.html"}},[_c('strong',[_v("HTML")]),_v(" coding standard")])]),_v(" "),_c('li',[_c('a',{attrs:{"href":"https://se-education.org/guides/conventions/markdown.html"}},[_c('strong',[_v("Markdown/MarkBind")]),_v(" coding standard")])]),_v(" "),_c('li',[_c('a',{attrs:{"href":"https://se-education.org/guides/conventions/java/index.html"}},[_c('strong',[_v("Java")]),_v(" coding standard")])]),_v(" "),_c('li',[_c('a',{attrs:{"href":"https://se-education.org/guides/conventions/javascript.html"}},[_c('strong',[_v("JavaScript")]),_v(" coding standard")])]),_v(" "),_c('li',[_c('strong',[_v("TypeScript")]),_v(": In addition to the JavaScript coding standard, follow the "),_c('a',{attrs:{"href":"https://typescript-eslint.io/rules/"}},[_c('strong',[_v("recommended ESLint rules")])]),_v(" and the formatting rules "),_c('a',{attrs:{"href":"#typescript-specific-formatting"}},[_v("described below")]),_v(".")]),_v(" "),_c('li',[_c('strong',[_v("Vue Components")]),_v(": Follow the "),_c('a',{attrs:{"href":"https://vuejs.org/style-guide/"}},[_c('strong',[_v("Vue style guide")])]),_v(", up to the "),_c('strong',[_v("Recommended")]),_v(" section.")]),_v(" "),_c('li',[_c('strong',[_v("Documentation")]),_v(": Follow the "),_c('a',{attrs:{"href":"https://developers.google.com/style"}},[_c('strong',[_v("Google developer documentation style guide")])]),_v(".")])]),_v(" "),_c('h2',{attrs:{"id":"note-on-ternary-operators"}},[_v("Note on Ternary Operators:"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#note-on-ternary-operators","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Ternary operators can be used to shorten if-else blocks such as this:")]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"hljs java"}},[_c('span',[_v("LocalDateTime min = ARBITRARY_FIRST_COMMIT_DATE_UTC.withZoneSameInstant(zoneId).toLocalDateTime();\n")]),_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-keyword"}},[_v("if")]),_v(" (!commitInfos.isEmpty()) {\n")]),_c('span',[_v(" min = commitInfos.get("),_c('span',{pre:true,attrs:{"class":"hljs-number"}},[_v("0")]),_v(").getTime();\n")]),_c('span',[_v("}\n")]),_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-keyword"}},[_v("return")]),_v(" min;\n")])])]),_c('p',[_v("The result would look something like this:")]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"hljs java"}},[_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-keyword"}},[_v("return")]),_v(" (commitInfos.isEmpty())\n")]),_c('span',[_v(" ? ARBITRARY_FIRST_COMMIT_DATE_UTC.withZoneSameInstant(zoneId).toLocalDateTime()\n")]),_c('span',[_v(" : commitInfos.get("),_c('span',{pre:true,attrs:{"class":"hljs-number"}},[_v("0")]),_v(").getTime();\n")])])]),_c('p',[_v("To preserve readability, it is recommended that if-else blocks should only be\nconverted to ternary operators if the resultant code can be kept at most 3 lines long\n(in accordance to the coding standard).")]),_v(" "),_c('h2',{attrs:{"id":"additional-javadoc-requirements"}},[_v("Additional Javadoc requirements:"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#additional-javadoc-requirements","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("In addition to what has been mentioned in the "),_c('a',{attrs:{"href":"https://se-education.org/guides/conventions/java/index.html"}},[_c('strong',[_v("Java")]),_v(" coding standard (SE-EDU)")]),_v(" and "),_c('a',{attrs:{"href":"https://google.github.io/styleguide/javaguide.html"}},[_c('strong',[_v("Google Java Style Guide")])]),_v(", we also stipulate the following standards for Javadoc:")]),_v(" "),_c('ul',[_c('li',[_v("If Javadoc is written for a method, all input parameters should be described in the Javadoc, either in the description with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("@code tags")]),_v(" or through "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("@param")]),_v(" block tags.\n"),_c('ul',[_c('li',[_v("If "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("@param")]),_v(" block tags are used, they must be used for all parameters.")]),_v(" "),_c('li',[_v("This is not necessary (although still recommended) for methods with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("@Override")]),_v(" annotations if Javadoc is used. However, if the method that is being overriden is part of your code and has Javadoc, all parameters must be described.")])])])]),_v(" "),_c('p',[_v("Negative Examples:")]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"hljs java"}},[_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-comment"}},[_v("// Not okay (Only mentions zoneId parameter):")]),_v("\n")]),_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-comment"}},[_v("/**")]),_v("\n")]),_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-comment"}},[_v(" * Returns a {"),_c('span',{pre:true,attrs:{"class":"hljs-doctag"}},[_v("@link")]),_v(" LocalDateTime} object adjusted for timezone given by {"),_c('span',{pre:true,attrs:{"class":"hljs-doctag"}},[_v("@code")]),_v(" zoneId}.")]),_v("\n")]),_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-comment"}},[_v(" */")]),_v("\n")]),_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-function"}},[_c('span',{pre:true,attrs:{"class":"hljs-keyword"}},[_v("public")]),_v(" LocalDateTime "),_c('span',{pre:true,attrs:{"class":"hljs-title"}},[_v("adjustTimeZone")]),_c('span',{pre:true,attrs:{"class":"hljs-params"}},[_v("(LocalDateTime sinceDate, ZoneId zoneId)")]),_v(" ")]),_v("{\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-comment"}},[_v("//Code here")]),_v("\n")]),_c('span',[_v("}\n")]),_c('span',[_v("\n")]),_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-comment"}},[_v("// Not okay (@param tag used only for zoneId)")]),_v("\n")]),_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-comment"}},[_v("/**")]),_v("\n")]),_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-comment"}},[_v(" * Returns a {"),_c('span',{pre:true,attrs:{"class":"hljs-doctag"}},[_v("@link")]),_v(" LocalDateTime} object by adjusting {"),_c('span',{pre:true,attrs:{"class":"hljs-doctag"}},[_v("@code")]),_v(" sinceDate}")]),_v("\n")]),_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-comment"}},[_v(" * to the timezone given by {"),_c('span',{pre:true,attrs:{"class":"hljs-doctag"}},[_v("@code")]),_v(" zoneId}.")]),_v("\n")]),_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-comment"}},[_v(" *")]),_v("\n")]),_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-comment"}},[_v(" * "),_c('span',{pre:true,attrs:{"class":"hljs-doctag"}},[_v("@param")]),_v(" zoneId The timezone ID to adjust the sinceDate to.")]),_v("\n")]),_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-comment"}},[_v(" */")]),_v("\n")]),_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-function"}},[_c('span',{pre:true,attrs:{"class":"hljs-keyword"}},[_v("public")]),_v(" LocalDateTime "),_c('span',{pre:true,attrs:{"class":"hljs-title"}},[_v("adjustTimeZone")]),_c('span',{pre:true,attrs:{"class":"hljs-params"}},[_v("(LocalDateTime sinceDate, ZoneId zoneId)")]),_v(" ")]),_v("{\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-comment"}},[_v("//Code here")]),_v("\n")]),_c('span',[_v("}\n")])])]),_c('p',[_v("Positive Example #1:")]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"hljs java"}},[_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-comment"}},[_v("// Okay (No @param tags):")]),_v("\n")]),_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-comment"}},[_v("/**")]),_v("\n")]),_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-comment"}},[_v(" * Returns a {"),_c('span',{pre:true,attrs:{"class":"hljs-doctag"}},[_v("@link")]),_v(" LocalDateTime} object by adjusting {"),_c('span',{pre:true,attrs:{"class":"hljs-doctag"}},[_v("@code")]),_v(" sinceDate}")]),_v("\n")]),_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-comment"}},[_v(" * to the timezone given by {"),_c('span',{pre:true,attrs:{"class":"hljs-doctag"}},[_v("@code")]),_v(" zoneId}.")]),_v("\n")]),_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-comment"}},[_v(" */")]),_v("\n")]),_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-function"}},[_c('span',{pre:true,attrs:{"class":"hljs-keyword"}},[_v("public")]),_v(" LocalDateTime "),_c('span',{pre:true,attrs:{"class":"hljs-title"}},[_v("adjustTimeZone")]),_c('span',{pre:true,attrs:{"class":"hljs-params"}},[_v("(LocalDateTime sinceDate, ZoneId zoneId)")]),_v(" ")]),_v("{\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-comment"}},[_v("//Code here")]),_v("\n")]),_c('span',[_v("}\n")])])]),_c('p',[_v("Positive Example #2:")]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"hljs java"}},[_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-comment"}},[_v("// Okay (@param tags used for all inputs):")]),_v("\n")]),_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-comment"}},[_v("/**")]),_v("\n")]),_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-comment"}},[_v(" * Returns a {"),_c('span',{pre:true,attrs:{"class":"hljs-doctag"}},[_v("@link")]),_v(" LocalDateTime} object by adjusting {"),_c('span',{pre:true,attrs:{"class":"hljs-doctag"}},[_v("@code")]),_v(" sinceDate}")]),_v("\n")]),_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-comment"}},[_v(" * to the timezone given by {"),_c('span',{pre:true,attrs:{"class":"hljs-doctag"}},[_v("@code")]),_v(" zoneId}.")]),_v("\n")]),_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-comment"}},[_v(" *")]),_v("\n")]),_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-comment"}},[_v(" * "),_c('span',{pre:true,attrs:{"class":"hljs-doctag"}},[_v("@param")]),_v(" sinceDate The date prior to the timezone conversion.")]),_v("\n")]),_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-comment"}},[_v(" * "),_c('span',{pre:true,attrs:{"class":"hljs-doctag"}},[_v("@param")]),_v(" zoneId The timezone ID to adjust the sinceDate to.")]),_v("\n")]),_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-comment"}},[_v(" */")]),_v("\n")]),_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-function"}},[_c('span',{pre:true,attrs:{"class":"hljs-keyword"}},[_v("public")]),_v(" LocalDateTime "),_c('span',{pre:true,attrs:{"class":"hljs-title"}},[_v("adjustTimeZone")]),_c('span',{pre:true,attrs:{"class":"hljs-params"}},[_v("(LocalDateTime sinceDate, ZoneId zoneId)")]),_v(" ")]),_v("{\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-comment"}},[_v("//Code here")]),_v("\n")]),_c('span',[_v("}\n")])])]),_c('ul',[_c('li',[_v("Within the main code, if an exception is thrown in a method (both header and body) for which Javadoc is written, a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("@throws")]),_v(" tag must be used to describe how the exception is likely to arise.\n"),_c('ul',[_c('li',[_v("This requirement does not apply to test code.")]),_v(" "),_c('li',[_v("One "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("@throws")]),_v(" tag per unique exception.")]),_v(" "),_c('li',[_v("The order of exceptions in the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("@throws")]),_v(" tag block should match that of the method's "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("throws")]),_v(" statement.")])])])]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"hljs java"}},[_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-comment"}},[_v("// Not okay (order of exceptions in tag block and method signature do not match):")]),_v("\n")]),_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-comment"}},[_v("/**")]),_v("\n")]),_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-comment"}},[_v(" * Returns a {"),_c('span',{pre:true,attrs:{"class":"hljs-doctag"}},[_v("@link")]),_v(" LocalDateTime} object from {"),_c('span',{pre:true,attrs:{"class":"hljs-doctag"}},[_v("@code")]),_v(" dateString}.")]),_v("\n")]),_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-comment"}},[_v(" *")]),_v("\n")]),_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-comment"}},[_v(" * "),_c('span',{pre:true,attrs:{"class":"hljs-doctag"}},[_v("@throws")]),_v(" ParseException if {"),_c('span',{pre:true,attrs:{"class":"hljs-doctag"}},[_v("@code")]),_v(" dateString} cannot be parsed.")]),_v("\n")]),_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-comment"}},[_v(" * "),_c('span',{pre:true,attrs:{"class":"hljs-doctag"}},[_v("@throws")]),_v(" NullPointerException if {"),_c('span',{pre:true,attrs:{"class":"hljs-doctag"}},[_v("@code")]),_v(" dateString} is null.")]),_v("\n")]),_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-comment"}},[_v(" */")]),_v("\n")]),_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-function"}},[_c('span',{pre:true,attrs:{"class":"hljs-keyword"}},[_v("public")]),_v(" LocalDateTime "),_c('span',{pre:true,attrs:{"class":"hljs-title"}},[_v("parseDate")]),_c('span',{pre:true,attrs:{"class":"hljs-params"}},[_v("(String dateString)")]),_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-keyword"}},[_v("throws")]),_v(" NullPointerException, ParseException ")]),_v("{\n")]),_c('span',[_v(" String trimmedString = dateString.toUpperCase(); "),_c('span',{pre:true,attrs:{"class":"hljs-comment"}},[_v("// NullPointerException may happen here.")]),_v("\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-comment"}},[_v("// Code here")]),_v("\n")]),_c('span',[_v("}\n")]),_c('span',[_v("\n")]),_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-comment"}},[_v("// Should be:")]),_v("\n")]),_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-comment"}},[_v("/**")]),_v("\n")]),_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-comment"}},[_v(" * Returns a {"),_c('span',{pre:true,attrs:{"class":"hljs-doctag"}},[_v("@link")]),_v(" LocalDateTime} object from {"),_c('span',{pre:true,attrs:{"class":"hljs-doctag"}},[_v("@code")]),_v(" dateString}.")]),_v("\n")]),_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-comment"}},[_v(" *")]),_v("\n")]),_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-comment"}},[_v(" * "),_c('span',{pre:true,attrs:{"class":"hljs-doctag"}},[_v("@throws")]),_v(" NullPointerException if {"),_c('span',{pre:true,attrs:{"class":"hljs-doctag"}},[_v("@code")]),_v(" dateString} is null.")]),_v("\n")]),_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-comment"}},[_v(" * "),_c('span',{pre:true,attrs:{"class":"hljs-doctag"}},[_v("@throws")]),_v(" ParseException if {"),_c('span',{pre:true,attrs:{"class":"hljs-doctag"}},[_v("@code")]),_v(" dateString} cannot be parsed.")]),_v("\n")]),_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-comment"}},[_v(" */")]),_v("\n")]),_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-function"}},[_c('span',{pre:true,attrs:{"class":"hljs-keyword"}},[_v("public")]),_v(" LocalDateTime "),_c('span',{pre:true,attrs:{"class":"hljs-title"}},[_v("parseDate")]),_c('span',{pre:true,attrs:{"class":"hljs-params"}},[_v("(String dateString)")]),_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-keyword"}},[_v("throws")]),_v(" NullPointerException, ParseException ")]),_v("{\n")]),_c('span',[_v(" String trimmedString = dateString.toUpperCase(); "),_c('span',{pre:true,attrs:{"class":"hljs-comment"}},[_v("// NullPointerException may happen here.")]),_v("\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-comment"}},[_v("// Code here")]),_v("\n")]),_c('span',[_v("}\n")])])]),_c('h2',{attrs:{"id":"typescript-specific-formatting"}},[_v("TypeScript specific formatting"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#typescript-specific-formatting","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("For TypeScript specific code, such as within an "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("interface")]),_v(" or type annotations, we also stipulate the following standards:")]),_v(" "),_c('ul',[_c('li',[_v("Use semicolons as delimiters for TypeScript interfaces and types.")])]),_v(" "),_c('p',[_v("Negative Examples:")]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"hljs typescript"}},[_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-comment"}},[_v("// missing semicolon delimiter")]),_v("\n")]),_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-keyword"}},[_v("interface")]),_v(" Foo {\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("name")]),_v(": "),_c('span',{pre:true,attrs:{"class":"hljs-built_in"}},[_v("string")]),_v("\n")]),_c('span',[_v(" greet(): "),_c('span',{pre:true,attrs:{"class":"hljs-built_in"}},[_v("string")]),_v("\n")]),_c('span',[_v("}\n")]),_c('span',[_v("\n")]),_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-comment"}},[_v("// using incorrect delimiter")]),_v("\n")]),_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-keyword"}},[_v("interface")]),_v(" Foo {\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("name")]),_v(": "),_c('span',{pre:true,attrs:{"class":"hljs-built_in"}},[_v("string")]),_v(",\n")]),_c('span',[_v(" greet(): "),_c('span',{pre:true,attrs:{"class":"hljs-built_in"}},[_v("string")]),_v(",\n")]),_c('span',[_v("}\n")])])]),_c('p',[_v("Positive Example:")]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"hljs typescript"}},[_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-comment"}},[_v("// semicolon delimiter")]),_v("\n")]),_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-keyword"}},[_v("interface")]),_v(" Foo {\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("name")]),_v(": "),_c('span',{pre:true,attrs:{"class":"hljs-built_in"}},[_v("string")]),_v(";\n")]),_c('span',[_v(" greet(): "),_c('span',{pre:true,attrs:{"class":"hljs-built_in"}},[_v("string")]),_v(";\n")]),_c('span',[_v("}\n")])])]),_c('ul',[_c('li',[_v("For type annotations, use a space after but not before.")])]),_v(" "),_c('p',[_v("Negative Examples:")]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"hljs typescript"}},[_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-keyword"}},[_v("let")]),_v(" foo:"),_c('span',{pre:true,attrs:{"class":"hljs-built_in"}},[_v("string")]),_v(" = "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"bar\"")]),_v(";\n")]),_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-keyword"}},[_v("let")]),_v(" foo :"),_c('span',{pre:true,attrs:{"class":"hljs-built_in"}},[_v("string")]),_v(" = "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"bar\"")]),_v(";\n")]),_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-keyword"}},[_v("let")]),_v(" foo : "),_c('span',{pre:true,attrs:{"class":"hljs-built_in"}},[_v("string")]),_v(" = "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"bar\"")]),_v(";\n")]),_c('span',[_v("\n")]),_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-function"}},[_c('span',{pre:true,attrs:{"class":"hljs-keyword"}},[_v("function")]),_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-title"}},[_v("foo")]),_v("("),_c('span',{pre:true,attrs:{"class":"hljs-params"}}),_v("):"),_c('span',{pre:true,attrs:{"class":"hljs-title"}},[_v("string")]),_v(" ")]),_v("{}\n")]),_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-function"}},[_c('span',{pre:true,attrs:{"class":"hljs-keyword"}},[_v("function")]),_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-title"}},[_v("foo")]),_v("("),_c('span',{pre:true,attrs:{"class":"hljs-params"}}),_v(") :"),_c('span',{pre:true,attrs:{"class":"hljs-title"}},[_v("string")]),_v(" ")]),_v("{}\n")]),_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-function"}},[_c('span',{pre:true,attrs:{"class":"hljs-keyword"}},[_v("function")]),_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-title"}},[_v("foo")]),_v("("),_c('span',{pre:true,attrs:{"class":"hljs-params"}}),_v(") : "),_c('span',{pre:true,attrs:{"class":"hljs-title"}},[_v("string")]),_v(" ")]),_v("{}\n")]),_c('span',[_v("\n")]),_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-class"}},[_c('span',{pre:true,attrs:{"class":"hljs-keyword"}},[_v("class")]),_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-title"}},[_v("Foo")]),_v(" ")]),_v("{\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("name")]),_v(":"),_c('span',{pre:true,attrs:{"class":"hljs-built_in"}},[_v("string")]),_v(";\n")]),_c('span',[_v("}\n")]),_c('span',[_v("\n")]),_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-class"}},[_c('span',{pre:true,attrs:{"class":"hljs-keyword"}},[_v("class")]),_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-title"}},[_v("Foo")]),_v(" ")]),_v("{\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("name")]),_v(" :"),_c('span',{pre:true,attrs:{"class":"hljs-built_in"}},[_v("string")]),_v(";\n")]),_c('span',[_v("}\n")]),_c('span',[_v("\n")]),_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-class"}},[_c('span',{pre:true,attrs:{"class":"hljs-keyword"}},[_v("class")]),_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-title"}},[_v("Foo")]),_v(" ")]),_v("{\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("name")]),_v(" : "),_c('span',{pre:true,attrs:{"class":"hljs-built_in"}},[_v("string")]),_v(";\n")]),_c('span',[_v("}\n")])])]),_c('p',[_v("Positive Examples:")]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"hljs typescript"}},[_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-keyword"}},[_v("let")]),_v(" foo: "),_c('span',{pre:true,attrs:{"class":"hljs-built_in"}},[_v("string")]),_v(" = "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"bar\"")]),_v(";\n")]),_c('span',[_v("\n")]),_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-function"}},[_c('span',{pre:true,attrs:{"class":"hljs-keyword"}},[_v("function")]),_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-title"}},[_v("foo")]),_v("("),_c('span',{pre:true,attrs:{"class":"hljs-params"}}),_v("): "),_c('span',{pre:true,attrs:{"class":"hljs-title"}},[_v("string")]),_v(" ")]),_v("{}\n")]),_c('span',[_v("\n")]),_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-class"}},[_c('span',{pre:true,attrs:{"class":"hljs-keyword"}},[_v("class")]),_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-title"}},[_v("Foo")]),_v(" ")]),_v("{\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("name")]),_v(": "),_c('span',{pre:true,attrs:{"class":"hljs-built_in"}},[_v("string")]),_v(";\n")]),_c('span',[_v("}\n")])])])])])],1),_v(" "),_c('p'),_v(" "),_m(9),_v(" "),_m(10),_v(" "),_c('div',{attrs:{"id":"section-running-from-code"}},[_m(11),_v(" "),_c('div',{staticClass:"indented-level0"},[_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('span',[_c('span',{staticClass:"glyphicon glyphicon-log-in",attrs:{"aria-hidden":"true"}})]),_v(" User guide → Appendix: "),_c('strong',[_v("CLI syntax reference")])])]},proxy:true}])},[_v(" "),_c('div',[_c('h1',{staticClass:"display-4",attrs:{"id":"appendix-cli-syntax-reference"}},[_c('span',[_v("Appendix: CLI syntax reference")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#appendix-cli-syntax-reference","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{staticClass:"lead"},[_c('p',[_v("The command "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar")]),_v(" takes several flags.")])]),_v(" "),_c('box',[_c('p',[_c('strong',[_v("Examples")]),_v(":")]),_v(" "),_c('p',[_v("An example of a command using most parameters:"),_c('br'),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar --repos https://github.com/reposense/RepoSense.git --output ./report_folder --since 31/1/2017 --until 31/12/2018 --formats java adoc xml --view --ignore-standalone-config --last-modified-date --timezone UTC+08 --find-previous-authors --analyze-authorship --originality-threshold 0.66")])]),_v(" "),_c('p',[_v("Same command as above but using most parameters in alias format:"),_c('br'),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar -r https://github.com/reposense/RepoSense.git -o ./report_folder -s 31/1/2017 -u 31/12/2018 -f java adoc xml -v -i -l -t UTC+08 -F -A -ot 0.66")])])]),_v(" "),_c('p',[_v("The section below provides explanations for each of the flags.")]),_v(" "),_c('h3',{attrs:{"id":"analyze-authorship-a"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--analyze-authorship")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-A")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#analyze-authorship-a","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--analyze-authorship")])]),_v(": Performs further analysis to distinguish between partial and full credit attribution for\nlines of code assigned to the author.")]),_v(" "),_c('ul',[_c('li',[_v("Default: this feature is turned "),_c('em',[_c('strong',[_v("off")])]),_v(" by default and the author will receive partial credits for all lines of\ncode, as the code lines are at least partial credit but may not qualify for full credit.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-A")]),_v(" (upper case)")]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--analyze-authorship")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-A")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("A darker background colour represents full credit, while a lighter background colour represents partial credit.")]),_v(" "),_c('p',[_v("If the code is attributed to a different author by the user via "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("@@author")]),_v(" tag, then the new author will be given\npartial credit.")])]),_v(" "),_c('h3',{attrs:{"id":"assets-a"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--assets")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-a")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#assets-a","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{attrs:{"id":"section-assets"}},[_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--assets ASSETS_DIRECTORY")])]),_v(": Specifies where to place assets for report generation.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ASSETS_DIRECTORY")]),_v(" The directory containing the assets files. A "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("favicon.ico")]),_v(" file can be placed here to customize the favicon of the dashboard, while a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("title.md")]),_v(" file can be placed to customize the "),_c('a',{attrs:{"href":"https://reposense.org/ug/customizingReports.html#add-a-title"}},[_v("title")]),_v(" of the report using "),_c('a',{attrs:{"href":"https://www.markdownguide.org/basic-syntax/"}},[_v("Markdown syntax")]),_v(".")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-a")])]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--assets ./assets")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-a ./assets")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("If "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--assets")]),_v(" is not specified, RepoSense looks for assets in the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./assets")]),_v(" directory.")])])])],1),_v(" "),_c('h3',{attrs:{"id":"config-c"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--config")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-c")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#config-c","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{attrs:{"id":"section-config"}},[_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--config CONFIG_DIRECTORY")])]),_v(": Specifies that config files located in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("CONFIG_DIRECTORY")]),_v(" should be used to customize the report.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("CONFIG_DIRECTORY")]),_v(" The directory containing the config files. Should contain a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(" file. Optionally, can contain an "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(" file or/and a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("group-config.csv")]),_v(" file or/and a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("report-config.json")]),_v(" file or/and a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("blurbs.md")]),_v(" file.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-c")])]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar --config ./config")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("Cannot be used with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repos")]),_v(". The "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repos")]),_v(" flag will take precedence over this flag.")]),_v(" "),_c('li',[_v("If both "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repos")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--config")]),_v(" are not specified, RepoSense looks for config files in the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./config")]),_v(" directory.")]),_v(" "),_c('li',[_v("Config files must follow "),_c('a',{attrs:{"href":"/RepoSense/ug/configFiles.html"}},[_v("this")]),_v(" format.")])])])],1),_v(" "),_c('h3',{attrs:{"id":"formats-f"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--formats")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-f")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#formats-f","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--formats LIST_OF_FORMATS")])]),_v(": Specifies which file extensions to be included in the analysis.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("LIST_OF_FORMATS")]),_v(" A space-separated list of file extensions that should be included in the analysis."),_c('br'),_v("\nDefault: all file formats")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-f")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--formats css fxml gradle")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-f css fxml gradle")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Binary file formats, such as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("jpg")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("png")]),_v(","),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("exe")]),_v(","),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("zip")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("rar")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("docx")]),_v(", and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("pptx")]),_v(", all will be labelled as the file type "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("binary")]),_v(" in the generated report.")])]),_v(" "),_c('h3',{attrs:{"id":"find-previous-authors-f"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--find-previous-authors")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-F")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#find-previous-authors-f","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--find-previous-authors")])]),_v(": Utilizes Git blame's ignore revisions functionality, RepoSense will attempt to blame the line changes caused by commits in the ignore commit list to the previous authors who altered those lines (if available).")]),_v(" "),_c('ul',[_c('li',[_v("Default: RepoSense will assume that no authors are responsible for the code changes in the lines altered by commits in the ignore commit list.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-F")]),_v(" (uppercase F)")]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--find-previous-authors")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-F")])])]),_v(" "),_c('h3',{attrs:{"id":"help-h"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--help")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-h")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#help-h","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--help")])]),_v(": Shows the help message.")]),_v(" "),_c('ul',[_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-h")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Cannot be used with any other flags. This flag takes precedence over all other flags.")])]),_v(" "),_c('h3',{attrs:{"id":"ignore-standalone-config-i"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--ignore-standalone-config")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-i")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#ignore-standalone-config-i","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--ignore-standalone-config")])]),_v(": Specifies that the standalone config file in the repo should be ignored.")]),_v(" "),_c('ul',[_c('li',[_v("Default: the standalone config file is not ignored")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-i")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--ignore-standalone-config")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-i")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("This flag overrides the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Ignore standalone config")]),_v(" field in the CSV config file.")])]),_v(" "),_c('h3',{attrs:{"id":"ignore-filesize-limit-i"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--ignore-filesize-limit")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-I")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#ignore-filesize-limit-i","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--ignore-filesize-limit")])]),_v(": Specifies that the file size limit (both default and user-defined) should be ignored during the analysis.")]),_v(" "),_c('ul',[_c('li',[_v("Default: the file size limit is not ignored")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-I")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--ignore-filesize-limit")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-I")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("All files are subject to a default file size limit or a custom size limit set by the user. Most files should not be\naffected by the default size limit. This flag can be useful for including files in your report that are affected by\nthe size limit. Note that this flag may result in large report sizes and/or slower report generation.")])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("This flag overrides the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Ignore file size limit")]),_v(" field in the CSV config file.")])]),_v(" "),_c('h3',{attrs:{"id":"last-modified-date-l"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--last-modified-date")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-l")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#last-modified-date-l","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--last-modified-date")])]),_v(": Specifies that the last modified date of each line of code should be added to "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("authorship.json")]),_v(".")]),_v(" "),_c('ul',[_c('li',[_v("Default: the last modified date of each line of code will not be added to "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("authorship.json")])]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-l")]),_v(" (lowercase L)")]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--last-modified-date")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-l")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("Cannot be used with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--shallow-cloning")]),_v(". This may result in an incorrect last modified date.")]),_v(" "),_c('li',[_v("The last modified dates will be in the same timezone specified with the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--timezone")]),_v(" flag.")])])]),_v(" "),_c('h3',{attrs:{"id":"originality-threshold-ot"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--originality-threshold")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-ot")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#originality-threshold-ot","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--originality-threshold [VALUE]")])]),_v(": Specifies the cut-off point for partial and full credit\nin "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--analyze-authorship")]),_v(". Author will be given full credit if their contribution exceeds this threshold, else partial\ncredit is given.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("VALUE")]),_v(" Optional. Acceptable range: [0.0, 1.0]."),_c('br'),_v("\nDefault: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("0.51")])]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-ot")])]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--originality-threshold 0.66")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-ot 0.66")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("Requires "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--analyze-authorship")]),_v(" flag.")]),_v(" "),_c('li',[_v("An author's contribution, or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("originality score")]),_v(", is calculated using Levenshtein Distance (Edit Distance) algorithm.\nWe compare the difference between current code line and its previous versions.")])])]),_v(" "),_c('h3',{attrs:{"id":"output-o"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--output")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-o")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#output-o","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--output OUTPUT_DIRECTORY")])]),_v(": Indicates where to save the report generated.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("OUTPUT_DIRECTORY")]),_v(" The location for the generated "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("reposense-report")]),_v(" folder."),_c('br'),_v("\nDefault: current directory")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-o")])]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--output ./foo")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-o ./foo")]),_v(" (the report will be in the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./foo/reposense-report")]),_v(" folder)")])]),_v(" "),_c('h3',{attrs:{"id":"period-p"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--period")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-p")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#period-p","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--period PERIOD")])]),_v(": Specifies the period of analysis window.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("PERIOD")]),_v(" The period of analysis window, in the format "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("nd")]),_v(" (for n days) or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("nw")]),_v(" (for n weeks). It is used to calculate end date if only start date is specified, or calculate end date if only start date is specified.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-p")])]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--period 30d")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--period 4w")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("If both start date and end date are not specified, the date of generating the report will be taken as the end date.")]),_v(" "),_c('li',[_v("May analyze the incorrect date range if used with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since d1")]),_v(". The program will throw a warning.")]),_v(" "),_c('li',[_v("Cannot be used with both "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--until")]),_v(". The program will throw an exception.")])])]),_v(" "),_c('h3',{attrs:{"id":"repo-repos-r"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repo")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repos")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-r")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#repo-repos-r","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repo REPO_LOCATION")])]),_v(": Specifies which repositories to analyze.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("REPO_LOCATION")]),_v(" A list of URLs or the disk location of the git repositories to analyze, separated by spaces.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-r")])]),_v(" "),_c('li',[_v("Examples:\n"),_c('ul',[_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repos https://github.com/reposense/RepoSense.git")])]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repo https://github.com/reposense/RepoSense.git c:/myRepose/foo/bar")]),_v(": analyzes the two specified repos (one remote, one local) and generates one report containing details of both.")])])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Cannot be used with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--config")]),_v(". This flag takes precedence over "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--config")]),_v(".")])]),_v(" "),_c('h3',{attrs:{"id":"shallow-cloning-s"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--shallow-cloning")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-S")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#shallow-cloning-s","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--shallow-cloning")])]),_v(": Clones repositories using Git's shallow cloning functionality, which can significantly reduce the time taken to clone large repositories. However, the flag should not be used for smaller repositories where the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(".git")]),_v(" file is smaller than 500 MB, as it would create overhead.")]),_v(" "),_c('ul',[_c('li',[_v("Default: RepoSense does not clone repositories using Git's shallow cloning functionality.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-S")]),_v(" (uppercase S)")]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--shallow-cloning")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-S")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Cannot be used with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--last-modified-date")]),_v(". This may result in an incorrect last modified date.")])]),_v(" "),_c('h3',{attrs:{"id":"since-s"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-s")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#since-s","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since START_DATE")])]),_v(": Specifies the start date for the period to be analyzed.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("START_DATE")]),_v(" The first day of the period to be analyzed, in the format "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("DD/MM/YYYY")]),_v("."),_c('br'),_v("\nDefault: one month before the current date")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-s")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since 21/10/2017")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-s 21/10/2017")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("If the start date is not specified, only commits made one month before the end date (if specified) or the date of generating the report, will be captured and analyzed.")]),_v(" "),_c('li',[_v("If "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("d1")]),_v(" is specified as the start date ("),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since d1")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-s d1")]),_v("), then the program will search for the earliest commit date of all repositories and use that as the start date.")]),_v(" "),_c('li',[_v("If "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("d1")]),_v(" is specified together with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--period")]),_v(", then the program will warn that the date range being analyzed may be incorrect.")])])]),_v(" "),_c('h3',{attrs:{"id":"timezone-t"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--timezone")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-t")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#timezone-t","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--timezone ZONE_ID")])]),_v(": Indicates the timezone to be used for the analysis.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ZONE_ID")]),_v(" The timezone in the format "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ZONE_ID[±hh[mm]]")]),_v("."),_c('br'),_v("\nDefault: system's default timezone")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-t")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--timezone UTC+08")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-t UTC-1030")])])]),_v(" "),_c('h3',{attrs:{"id":"until-u"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--until")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-u")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#until-u","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--until END_DATE")])]),_v(": Specifies the end date of the analysis period.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("END_DATE")]),_v(" The last date of the period to be analyzed, in the format "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("DD/MM/YYYY")]),_v("."),_c('br'),_v("\nDefault: current date")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-u")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--until 21/10/2017")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-u 21/10/2017")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Note: If the end date is not specified, the date of generating the report will be taken as the end date.")])]),_v(" "),_c('h3',{attrs:{"id":"version-v"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--version")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-V")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#version-v","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--version")])]),_v(": Shows the version of RepoSense.")]),_v(" "),_c('ul',[_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-V")]),_v(" (upper case)")])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Cannot be used with any other flags. This flag takes precedence over all other flags other than "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--help")]),_v(".")])]),_v(" "),_c('h3',{attrs:{"id":"view-v"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--view")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-v")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#view-v","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--view [REPORT_FOLDER]")])]),_v(": Specifies that the report should be opened in the default browser.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("REPORT_FOLDER")]),_v(" Optional. If specified, no analysis will be performed and the report specified by the argument will be opened."),_c('br'),_v("\nDefault: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./reposense-report")])]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-v")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--view")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-v")])])])],1)])],1),_v(" "),_c('p')]),_v(" "),_m(12),_v(" "),_m(13),_v(" "),_m(14),_v(" "),_m(15),_v(" "),_m(16),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("See "),_c('a',{attrs:{"href":"https://github.com/vuejs/vue-devtools"}},[_v("vue-devtools project home")]),_v(" page for more details.")])]),_v(" "),_m(17),_v(" "),_m(18),_v(" "),_m(19),_v(" "),_m(20),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Read "),_c('a',{attrs:{"href":"https://docs.cypress.io/api/commands/document.html#Syntax"}},[_v("Cypress's Documentation")]),_v(" to familiarize yourself with its syntax and "),_c('a',{attrs:{"href":"https://docs.cypress.io/guides/guides/debugging.html#Log-Cypress-events"}},[_v("Cypress's debugging guide")]),_v(" to tackle problems with your tests.")])]),_v(" "),_c('box',{attrs:{"type":"warning","seamless":""}},[_c('p',[_v("Note that it is "),_c('strong',[_v("compulsory")]),_v(" to add tests for the new front-end changes that you made to prevent regression bugs, except for trivial changes that are unlikely to cause any regression or other situations where testing does not apply to the change.")])]),_v(" "),_m(21),_v(" "),_m(22),_v(" "),_m(23),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("If you encountered an invalid browser error, ensure that you have "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Chrome")]),_v(" installed in the default installation directory. Otherwise, follow the instructions "),_c('a',{attrs:{"href":"https://docs.cypress.io/guides/guides/debugging.html#Launching-browsers"}},[_v("here")]),_v(" to create symbolic links so Cypress can locate "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Chrome")]),_v(" in your system.")])]),_v(" "),_m(24),_v(" "),_m(25),_v(" "),_m(26),_v(" "),_m(27),_v(" "),_m(28),_v(" "),_m(29),_v(" "),_m(30),_v(" "),_c('p',[_c('strong',[_v("To show some content only in the "),_c('tooltip',{scopedSlots:_u([{key:"content",fn:function(){return [_v("i.e., "),_c('a',{attrs:{"href":"https://reposense.org"}},[_v("https://reposense.org")])]},proxy:true}])},[_v("production website")])],1),_v(", add the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("tags=\"production\"")]),_v(" attribute to the HTML element enclosing the content. Similarly, "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("tags=\"dev\"")]),_v(" will make the content appear only in the "),_c('tooltip',{scopedSlots:_u([{key:"content",fn:function(){return [_v("i.e., "),_c('a',{attrs:{"href":"https://reposense.org/RepoSense"}},[_v("https://reposense.org/RepoSense")])]},proxy:true}])},[_v("dev website")]),_v(".")],1),_v(" "),_m(31)],1)],1),_v(" "),_m(32)])} +with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"fixed":""}},[_c('navbar',{attrs:{"type":"dark"},scopedSlots:_u([{key:"brand",fn:function(){return [_c('a',{staticClass:"navbar-brand",attrs:{"href":"/index.html","title":"Home"}},[_c('img',{attrs:{"width":"30px","src":"/favicon.ico"}})])]},proxy:true},{key:"right",fn:function(){return [_c('li',[_c('form',{staticClass:"navbar-form"},[_c('searchbar',{attrs:{"data":searchData,"placeholder":"Search","on-hit":searchCallback,"menu-align-right":""}})],1)])]},proxy:true}])},[_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/index.html"}},[_v("HOME")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/showcase.html"}},[_v("SHOWCASE")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/ug/index.html"}},[_v("USER GUIDE")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/dg/index.html"}},[_v("DEVELOPER GUIDE")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/about.html"}},[_v("ABOUT")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/contact.html"}},[_v("CONTACT")])]),_v(" "),_c('li',{attrs:{"tags":"dev"}},[_c('a',{staticClass:"nav-link",attrs:{"href":"https://reposense.org","target":"_blank"}},[_c('span',[_c('span',{staticClass:"fas fa-external-link-alt",attrs:{"aria-hidden":"true"}}),_v(" PRODUCTION SITE")])])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"https://github.com/RepoSense/reposense","target":"_blank"}},[_c('span',[_c('span',{staticClass:"fab fa-github",attrs:{"aria-hidden":"true"}})])])])])],1),_v(" "),_c('div',{attrs:{"id":"flex-body"}},[_c('overlay-source',{staticClass:"fixed-header-padding",attrs:{"id":"site-nav","tag-name":"nav","to":"site-nav"}},[_c('div',{staticClass:"site-nav-top"},[_c('div',{staticClass:"font-weight-bold mb-2",staticStyle:{"font-size":"1.25rem"}},[_c('span',[_c('strong',[_c('strong',[_v("DEVELOPER GUIDE")])])])])]),_v(" "),_c('div',{staticClass:"nav-component slim-scroll"},[_c('div',[_c('site-nav',[_c('overlay-source',{staticClass:"site-nav-list site-nav-list-root",attrs:{"tag-name":"ul","to":"mb-site-nav"}},[_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/index.html"}},[_c('strong',[_v("Contributing")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/settingUp.html"}},[_c('strong',[_v("Setting up")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/learningBasics.html"}},[_c('strong',[_v("Learning the basics")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/workflow.html"}},[_c('strong',[_v("Workflow")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('strong',[_v("Design and implementation")]),_v(" "),_c('div',{staticClass:"site-nav-dropdown-btn-container"},[_c('i',{staticClass:"site-nav-dropdown-btn-icon site-nav-rotate-icon",attrs:{"onclick":"handleSiteNavClick(this.parentNode.parentNode, false); event.stopPropagation();"}},[_c('span',{staticClass:"glyphicon glyphicon-menu-down",attrs:{"aria-hidden":"true"}})])])]),_c('ul',{staticClass:"site-nav-dropdown-container site-nav-dropdown-container-open site-nav-list"},[_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/architecture.html"}},[_v("Architecture")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/report.html"}},[_v("HTML report")])])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/projectManagement.html"}},[_c('strong',[_v("Project management")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/devOpsGuide.html"}},[_c('strong',[_v("DevOps guide")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('strong',[_v("Appendices")]),_v(" "),_c('div',{staticClass:"site-nav-dropdown-btn-container"},[_c('i',{staticClass:"site-nav-dropdown-btn-icon site-nav-rotate-icon",attrs:{"onclick":"handleSiteNavClick(this.parentNode.parentNode, false); event.stopPropagation();"}},[_c('span',{staticClass:"glyphicon glyphicon-menu-down",attrs:{"aria-hidden":"true"}})])])]),_c('ul',{staticClass:"site-nav-dropdown-container site-nav-dropdown-container-open site-nav-list"},[_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/cli.html"}},[_v("CLI syntax reference")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/dg/styleGuides.html"}},[_v("Style guides")])])])])])])],1)],1)])]),_v(" "),_c('div',{staticClass:"fixed-header-padding",attrs:{"id":"content-wrapper"}},[_m(0),_v(" "),_m(1),_v(" "),_m(2),_v(" "),_m(3),_v(" "),_m(4),_v(" "),_m(5),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("The issues for first timers usually have guidance provided in the comment or have linked pull requests from previous contributors. You can refer to them for implementation details.")])]),_v(" "),_m(6),_v(" "),_m(7),_v(" "),_m(8),_v(" "),_c('div',{staticClass:"indented-level2"},[_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('span',[_c('span',{staticClass:"glyphicon glyphicon-log-in",attrs:{"aria-hidden":"true"}})]),_v(" Appendix: Coding Standards")])]},proxy:true}])},[_v(" "),_c('div',[_c('h1',{staticClass:"display-4",attrs:{"id":"appendix-style-guides"}},[_c('span',[_v("Appendix: Style guides")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#appendix-style-guides","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{staticClass:"lead"},[_c('p',[_v("Our coding standards are mostly based on those at "),_c('a',{attrs:{"href":"https://se-education.org/guides"}},[_v("se-education.org/guides")]),_v(".")])]),_v(" "),_c('ul',[_c('li',[_c('a',{attrs:{"href":"https://se-education.org/guides/conventions/css.html"}},[_c('strong',[_v("CSS")]),_v(" coding standard")])]),_v(" "),_c('li',[_c('a',{attrs:{"href":"https://se-education.org/guides/conventions/files.html"}},[_c('strong',[_v("Files/folders")]),_v(" naming conventions")])]),_v(" "),_c('li',[_c('a',{attrs:{"href":"https://se-education.org/guides/conventions/html.html"}},[_c('strong',[_v("HTML")]),_v(" coding standard")])]),_v(" "),_c('li',[_c('a',{attrs:{"href":"https://se-education.org/guides/conventions/markdown.html"}},[_c('strong',[_v("Markdown/MarkBind")]),_v(" coding standard")])]),_v(" "),_c('li',[_c('a',{attrs:{"href":"https://se-education.org/guides/conventions/java/index.html"}},[_c('strong',[_v("Java")]),_v(" coding standard")])]),_v(" "),_c('li',[_c('a',{attrs:{"href":"https://se-education.org/guides/conventions/javascript.html"}},[_c('strong',[_v("JavaScript")]),_v(" coding standard")])]),_v(" "),_c('li',[_c('strong',[_v("TypeScript")]),_v(": In addition to the JavaScript coding standard, follow the "),_c('a',{attrs:{"href":"https://typescript-eslint.io/rules/"}},[_c('strong',[_v("recommended ESLint rules")])]),_v(" and the formatting rules "),_c('a',{attrs:{"href":"#typescript-specific-formatting"}},[_v("described below")]),_v(".")]),_v(" "),_c('li',[_c('strong',[_v("Vue Components")]),_v(": Follow the "),_c('a',{attrs:{"href":"https://vuejs.org/style-guide/"}},[_c('strong',[_v("Vue style guide")])]),_v(", up to the "),_c('strong',[_v("Recommended")]),_v(" section.")]),_v(" "),_c('li',[_c('strong',[_v("Documentation")]),_v(": Follow the "),_c('a',{attrs:{"href":"https://developers.google.com/style"}},[_c('strong',[_v("Google developer documentation style guide")])]),_v(".")])]),_v(" "),_c('h2',{attrs:{"id":"note-on-ternary-operators"}},[_v("Note on Ternary Operators:"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#note-on-ternary-operators","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Ternary operators can be used to shorten if-else blocks such as this:")]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"hljs java"}},[_c('span',[_v("LocalDateTime min = ARBITRARY_FIRST_COMMIT_DATE_UTC.withZoneSameInstant(zoneId).toLocalDateTime();\n")]),_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-keyword"}},[_v("if")]),_v(" (!commitInfos.isEmpty()) {\n")]),_c('span',[_v(" min = commitInfos.get("),_c('span',{pre:true,attrs:{"class":"hljs-number"}},[_v("0")]),_v(").getTime();\n")]),_c('span',[_v("}\n")]),_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-keyword"}},[_v("return")]),_v(" min;\n")])])]),_c('p',[_v("The result would look something like this:")]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"hljs java"}},[_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-keyword"}},[_v("return")]),_v(" (commitInfos.isEmpty())\n")]),_c('span',[_v(" ? ARBITRARY_FIRST_COMMIT_DATE_UTC.withZoneSameInstant(zoneId).toLocalDateTime()\n")]),_c('span',[_v(" : commitInfos.get("),_c('span',{pre:true,attrs:{"class":"hljs-number"}},[_v("0")]),_v(").getTime();\n")])])]),_c('p',[_v("To preserve readability, it is recommended that if-else blocks should only be\nconverted to ternary operators if the resultant code can be kept at most 3 lines long\n(in accordance to the coding standard).")]),_v(" "),_c('h2',{attrs:{"id":"additional-javadoc-requirements"}},[_v("Additional Javadoc requirements:"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#additional-javadoc-requirements","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("In addition to what has been mentioned in the "),_c('a',{attrs:{"href":"https://se-education.org/guides/conventions/java/index.html"}},[_c('strong',[_v("Java")]),_v(" coding standard (SE-EDU)")]),_v(" and "),_c('a',{attrs:{"href":"https://google.github.io/styleguide/javaguide.html"}},[_c('strong',[_v("Google Java Style Guide")])]),_v(", we also stipulate the following standards for Javadoc:")]),_v(" "),_c('ul',[_c('li',[_v("If Javadoc is written for a method, all input parameters should be described in the Javadoc, either in the description with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("@code tags")]),_v(" or through "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("@param")]),_v(" block tags.\n"),_c('ul',[_c('li',[_v("If "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("@param")]),_v(" block tags are used, they must be used for all parameters.")]),_v(" "),_c('li',[_v("This is not necessary (although still recommended) for methods with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("@Override")]),_v(" annotations if Javadoc is used. However, if the method that is being overriden is part of your code and has Javadoc, all parameters must be described.")])])])]),_v(" "),_c('p',[_v("Negative Examples:")]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"hljs java"}},[_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-comment"}},[_v("// Not okay (Only mentions zoneId parameter):")]),_v("\n")]),_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-comment"}},[_v("/**")]),_v("\n")]),_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-comment"}},[_v(" * Returns a {"),_c('span',{pre:true,attrs:{"class":"hljs-doctag"}},[_v("@link")]),_v(" LocalDateTime} object adjusted for timezone given by {"),_c('span',{pre:true,attrs:{"class":"hljs-doctag"}},[_v("@code")]),_v(" zoneId}.")]),_v("\n")]),_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-comment"}},[_v(" */")]),_v("\n")]),_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-function"}},[_c('span',{pre:true,attrs:{"class":"hljs-keyword"}},[_v("public")]),_v(" LocalDateTime "),_c('span',{pre:true,attrs:{"class":"hljs-title"}},[_v("adjustTimeZone")]),_c('span',{pre:true,attrs:{"class":"hljs-params"}},[_v("(LocalDateTime sinceDate, ZoneId zoneId)")]),_v(" ")]),_v("{\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-comment"}},[_v("//Code here")]),_v("\n")]),_c('span',[_v("}\n")]),_c('span',[_v("\n")]),_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-comment"}},[_v("// Not okay (@param tag used only for zoneId)")]),_v("\n")]),_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-comment"}},[_v("/**")]),_v("\n")]),_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-comment"}},[_v(" * Returns a {"),_c('span',{pre:true,attrs:{"class":"hljs-doctag"}},[_v("@link")]),_v(" LocalDateTime} object by adjusting {"),_c('span',{pre:true,attrs:{"class":"hljs-doctag"}},[_v("@code")]),_v(" sinceDate}")]),_v("\n")]),_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-comment"}},[_v(" * to the timezone given by {"),_c('span',{pre:true,attrs:{"class":"hljs-doctag"}},[_v("@code")]),_v(" zoneId}.")]),_v("\n")]),_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-comment"}},[_v(" *")]),_v("\n")]),_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-comment"}},[_v(" * "),_c('span',{pre:true,attrs:{"class":"hljs-doctag"}},[_v("@param")]),_v(" zoneId The timezone ID to adjust the sinceDate to.")]),_v("\n")]),_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-comment"}},[_v(" */")]),_v("\n")]),_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-function"}},[_c('span',{pre:true,attrs:{"class":"hljs-keyword"}},[_v("public")]),_v(" LocalDateTime "),_c('span',{pre:true,attrs:{"class":"hljs-title"}},[_v("adjustTimeZone")]),_c('span',{pre:true,attrs:{"class":"hljs-params"}},[_v("(LocalDateTime sinceDate, ZoneId zoneId)")]),_v(" ")]),_v("{\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-comment"}},[_v("//Code here")]),_v("\n")]),_c('span',[_v("}\n")])])]),_c('p',[_v("Positive Example #1:")]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"hljs java"}},[_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-comment"}},[_v("// Okay (No @param tags):")]),_v("\n")]),_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-comment"}},[_v("/**")]),_v("\n")]),_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-comment"}},[_v(" * Returns a {"),_c('span',{pre:true,attrs:{"class":"hljs-doctag"}},[_v("@link")]),_v(" LocalDateTime} object by adjusting {"),_c('span',{pre:true,attrs:{"class":"hljs-doctag"}},[_v("@code")]),_v(" sinceDate}")]),_v("\n")]),_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-comment"}},[_v(" * to the timezone given by {"),_c('span',{pre:true,attrs:{"class":"hljs-doctag"}},[_v("@code")]),_v(" zoneId}.")]),_v("\n")]),_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-comment"}},[_v(" */")]),_v("\n")]),_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-function"}},[_c('span',{pre:true,attrs:{"class":"hljs-keyword"}},[_v("public")]),_v(" LocalDateTime "),_c('span',{pre:true,attrs:{"class":"hljs-title"}},[_v("adjustTimeZone")]),_c('span',{pre:true,attrs:{"class":"hljs-params"}},[_v("(LocalDateTime sinceDate, ZoneId zoneId)")]),_v(" ")]),_v("{\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-comment"}},[_v("//Code here")]),_v("\n")]),_c('span',[_v("}\n")])])]),_c('p',[_v("Positive Example #2:")]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"hljs java"}},[_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-comment"}},[_v("// Okay (@param tags used for all inputs):")]),_v("\n")]),_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-comment"}},[_v("/**")]),_v("\n")]),_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-comment"}},[_v(" * Returns a {"),_c('span',{pre:true,attrs:{"class":"hljs-doctag"}},[_v("@link")]),_v(" LocalDateTime} object by adjusting {"),_c('span',{pre:true,attrs:{"class":"hljs-doctag"}},[_v("@code")]),_v(" sinceDate}")]),_v("\n")]),_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-comment"}},[_v(" * to the timezone given by {"),_c('span',{pre:true,attrs:{"class":"hljs-doctag"}},[_v("@code")]),_v(" zoneId}.")]),_v("\n")]),_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-comment"}},[_v(" *")]),_v("\n")]),_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-comment"}},[_v(" * "),_c('span',{pre:true,attrs:{"class":"hljs-doctag"}},[_v("@param")]),_v(" sinceDate The date prior to the timezone conversion.")]),_v("\n")]),_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-comment"}},[_v(" * "),_c('span',{pre:true,attrs:{"class":"hljs-doctag"}},[_v("@param")]),_v(" zoneId The timezone ID to adjust the sinceDate to.")]),_v("\n")]),_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-comment"}},[_v(" */")]),_v("\n")]),_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-function"}},[_c('span',{pre:true,attrs:{"class":"hljs-keyword"}},[_v("public")]),_v(" LocalDateTime "),_c('span',{pre:true,attrs:{"class":"hljs-title"}},[_v("adjustTimeZone")]),_c('span',{pre:true,attrs:{"class":"hljs-params"}},[_v("(LocalDateTime sinceDate, ZoneId zoneId)")]),_v(" ")]),_v("{\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-comment"}},[_v("//Code here")]),_v("\n")]),_c('span',[_v("}\n")])])]),_c('ul',[_c('li',[_v("Within the main code, if an exception is thrown in a method (both header and body) for which Javadoc is written, a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("@throws")]),_v(" tag must be used to describe how the exception is likely to arise.\n"),_c('ul',[_c('li',[_v("This requirement does not apply to test code.")]),_v(" "),_c('li',[_v("One "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("@throws")]),_v(" tag per unique exception.")]),_v(" "),_c('li',[_v("The order of exceptions in the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("@throws")]),_v(" tag block should match that of the method's "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("throws")]),_v(" statement.")])])])]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"hljs java"}},[_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-comment"}},[_v("// Not okay (order of exceptions in tag block and method signature do not match):")]),_v("\n")]),_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-comment"}},[_v("/**")]),_v("\n")]),_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-comment"}},[_v(" * Returns a {"),_c('span',{pre:true,attrs:{"class":"hljs-doctag"}},[_v("@link")]),_v(" LocalDateTime} object from {"),_c('span',{pre:true,attrs:{"class":"hljs-doctag"}},[_v("@code")]),_v(" dateString}.")]),_v("\n")]),_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-comment"}},[_v(" *")]),_v("\n")]),_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-comment"}},[_v(" * "),_c('span',{pre:true,attrs:{"class":"hljs-doctag"}},[_v("@throws")]),_v(" ParseException if {"),_c('span',{pre:true,attrs:{"class":"hljs-doctag"}},[_v("@code")]),_v(" dateString} cannot be parsed.")]),_v("\n")]),_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-comment"}},[_v(" * "),_c('span',{pre:true,attrs:{"class":"hljs-doctag"}},[_v("@throws")]),_v(" NullPointerException if {"),_c('span',{pre:true,attrs:{"class":"hljs-doctag"}},[_v("@code")]),_v(" dateString} is null.")]),_v("\n")]),_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-comment"}},[_v(" */")]),_v("\n")]),_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-function"}},[_c('span',{pre:true,attrs:{"class":"hljs-keyword"}},[_v("public")]),_v(" LocalDateTime "),_c('span',{pre:true,attrs:{"class":"hljs-title"}},[_v("parseDate")]),_c('span',{pre:true,attrs:{"class":"hljs-params"}},[_v("(String dateString)")]),_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-keyword"}},[_v("throws")]),_v(" NullPointerException, ParseException ")]),_v("{\n")]),_c('span',[_v(" String trimmedString = dateString.toUpperCase(); "),_c('span',{pre:true,attrs:{"class":"hljs-comment"}},[_v("// NullPointerException may happen here.")]),_v("\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-comment"}},[_v("// Code here")]),_v("\n")]),_c('span',[_v("}\n")]),_c('span',[_v("\n")]),_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-comment"}},[_v("// Should be:")]),_v("\n")]),_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-comment"}},[_v("/**")]),_v("\n")]),_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-comment"}},[_v(" * Returns a {"),_c('span',{pre:true,attrs:{"class":"hljs-doctag"}},[_v("@link")]),_v(" LocalDateTime} object from {"),_c('span',{pre:true,attrs:{"class":"hljs-doctag"}},[_v("@code")]),_v(" dateString}.")]),_v("\n")]),_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-comment"}},[_v(" *")]),_v("\n")]),_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-comment"}},[_v(" * "),_c('span',{pre:true,attrs:{"class":"hljs-doctag"}},[_v("@throws")]),_v(" NullPointerException if {"),_c('span',{pre:true,attrs:{"class":"hljs-doctag"}},[_v("@code")]),_v(" dateString} is null.")]),_v("\n")]),_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-comment"}},[_v(" * "),_c('span',{pre:true,attrs:{"class":"hljs-doctag"}},[_v("@throws")]),_v(" ParseException if {"),_c('span',{pre:true,attrs:{"class":"hljs-doctag"}},[_v("@code")]),_v(" dateString} cannot be parsed.")]),_v("\n")]),_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-comment"}},[_v(" */")]),_v("\n")]),_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-function"}},[_c('span',{pre:true,attrs:{"class":"hljs-keyword"}},[_v("public")]),_v(" LocalDateTime "),_c('span',{pre:true,attrs:{"class":"hljs-title"}},[_v("parseDate")]),_c('span',{pre:true,attrs:{"class":"hljs-params"}},[_v("(String dateString)")]),_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-keyword"}},[_v("throws")]),_v(" NullPointerException, ParseException ")]),_v("{\n")]),_c('span',[_v(" String trimmedString = dateString.toUpperCase(); "),_c('span',{pre:true,attrs:{"class":"hljs-comment"}},[_v("// NullPointerException may happen here.")]),_v("\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-comment"}},[_v("// Code here")]),_v("\n")]),_c('span',[_v("}\n")])])]),_c('h2',{attrs:{"id":"typescript-specific-formatting"}},[_v("TypeScript specific formatting"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#typescript-specific-formatting","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("For TypeScript specific code, such as within an "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("interface")]),_v(" or type annotations, we also stipulate the following standards:")]),_v(" "),_c('ul',[_c('li',[_v("Use semicolons as delimiters for TypeScript interfaces and types.")])]),_v(" "),_c('p',[_v("Negative Examples:")]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"hljs typescript"}},[_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-comment"}},[_v("// missing semicolon delimiter")]),_v("\n")]),_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-keyword"}},[_v("interface")]),_v(" Foo {\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("name")]),_v(": "),_c('span',{pre:true,attrs:{"class":"hljs-built_in"}},[_v("string")]),_v("\n")]),_c('span',[_v(" greet(): "),_c('span',{pre:true,attrs:{"class":"hljs-built_in"}},[_v("string")]),_v("\n")]),_c('span',[_v("}\n")]),_c('span',[_v("\n")]),_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-comment"}},[_v("// using incorrect delimiter")]),_v("\n")]),_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-keyword"}},[_v("interface")]),_v(" Foo {\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("name")]),_v(": "),_c('span',{pre:true,attrs:{"class":"hljs-built_in"}},[_v("string")]),_v(",\n")]),_c('span',[_v(" greet(): "),_c('span',{pre:true,attrs:{"class":"hljs-built_in"}},[_v("string")]),_v(",\n")]),_c('span',[_v("}\n")])])]),_c('p',[_v("Positive Example:")]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"hljs typescript"}},[_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-comment"}},[_v("// semicolon delimiter")]),_v("\n")]),_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-keyword"}},[_v("interface")]),_v(" Foo {\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("name")]),_v(": "),_c('span',{pre:true,attrs:{"class":"hljs-built_in"}},[_v("string")]),_v(";\n")]),_c('span',[_v(" greet(): "),_c('span',{pre:true,attrs:{"class":"hljs-built_in"}},[_v("string")]),_v(";\n")]),_c('span',[_v("}\n")])])]),_c('ul',[_c('li',[_v("For type annotations, use a space after but not before.")])]),_v(" "),_c('p',[_v("Negative Examples:")]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"hljs typescript"}},[_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-keyword"}},[_v("let")]),_v(" foo:"),_c('span',{pre:true,attrs:{"class":"hljs-built_in"}},[_v("string")]),_v(" = "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"bar\"")]),_v(";\n")]),_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-keyword"}},[_v("let")]),_v(" foo :"),_c('span',{pre:true,attrs:{"class":"hljs-built_in"}},[_v("string")]),_v(" = "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"bar\"")]),_v(";\n")]),_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-keyword"}},[_v("let")]),_v(" foo : "),_c('span',{pre:true,attrs:{"class":"hljs-built_in"}},[_v("string")]),_v(" = "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"bar\"")]),_v(";\n")]),_c('span',[_v("\n")]),_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-function"}},[_c('span',{pre:true,attrs:{"class":"hljs-keyword"}},[_v("function")]),_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-title"}},[_v("foo")]),_v("("),_c('span',{pre:true,attrs:{"class":"hljs-params"}}),_v("):"),_c('span',{pre:true,attrs:{"class":"hljs-title"}},[_v("string")]),_v(" ")]),_v("{}\n")]),_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-function"}},[_c('span',{pre:true,attrs:{"class":"hljs-keyword"}},[_v("function")]),_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-title"}},[_v("foo")]),_v("("),_c('span',{pre:true,attrs:{"class":"hljs-params"}}),_v(") :"),_c('span',{pre:true,attrs:{"class":"hljs-title"}},[_v("string")]),_v(" ")]),_v("{}\n")]),_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-function"}},[_c('span',{pre:true,attrs:{"class":"hljs-keyword"}},[_v("function")]),_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-title"}},[_v("foo")]),_v("("),_c('span',{pre:true,attrs:{"class":"hljs-params"}}),_v(") : "),_c('span',{pre:true,attrs:{"class":"hljs-title"}},[_v("string")]),_v(" ")]),_v("{}\n")]),_c('span',[_v("\n")]),_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-class"}},[_c('span',{pre:true,attrs:{"class":"hljs-keyword"}},[_v("class")]),_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-title"}},[_v("Foo")]),_v(" ")]),_v("{\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("name")]),_v(":"),_c('span',{pre:true,attrs:{"class":"hljs-built_in"}},[_v("string")]),_v(";\n")]),_c('span',[_v("}\n")]),_c('span',[_v("\n")]),_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-class"}},[_c('span',{pre:true,attrs:{"class":"hljs-keyword"}},[_v("class")]),_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-title"}},[_v("Foo")]),_v(" ")]),_v("{\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("name")]),_v(" :"),_c('span',{pre:true,attrs:{"class":"hljs-built_in"}},[_v("string")]),_v(";\n")]),_c('span',[_v("}\n")]),_c('span',[_v("\n")]),_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-class"}},[_c('span',{pre:true,attrs:{"class":"hljs-keyword"}},[_v("class")]),_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-title"}},[_v("Foo")]),_v(" ")]),_v("{\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("name")]),_v(" : "),_c('span',{pre:true,attrs:{"class":"hljs-built_in"}},[_v("string")]),_v(";\n")]),_c('span',[_v("}\n")])])]),_c('p',[_v("Positive Examples:")]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"hljs typescript"}},[_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-keyword"}},[_v("let")]),_v(" foo: "),_c('span',{pre:true,attrs:{"class":"hljs-built_in"}},[_v("string")]),_v(" = "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"bar\"")]),_v(";\n")]),_c('span',[_v("\n")]),_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-function"}},[_c('span',{pre:true,attrs:{"class":"hljs-keyword"}},[_v("function")]),_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-title"}},[_v("foo")]),_v("("),_c('span',{pre:true,attrs:{"class":"hljs-params"}}),_v("): "),_c('span',{pre:true,attrs:{"class":"hljs-title"}},[_v("string")]),_v(" ")]),_v("{}\n")]),_c('span',[_v("\n")]),_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-class"}},[_c('span',{pre:true,attrs:{"class":"hljs-keyword"}},[_v("class")]),_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-title"}},[_v("Foo")]),_v(" ")]),_v("{\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("name")]),_v(": "),_c('span',{pre:true,attrs:{"class":"hljs-built_in"}},[_v("string")]),_v(";\n")]),_c('span',[_v("}\n")])])])])])],1),_v(" "),_c('p'),_v(" "),_m(9),_v(" "),_m(10),_v(" "),_c('div',{attrs:{"id":"section-running-from-code"}},[_m(11),_v(" "),_c('div',{staticClass:"indented-level0"},[_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('span',[_c('span',{staticClass:"glyphicon glyphicon-log-in",attrs:{"aria-hidden":"true"}})]),_v(" User guide → Appendix: "),_c('strong',[_v("CLI syntax reference")])])]},proxy:true}])},[_v(" "),_c('div',[_c('h1',{staticClass:"display-4",attrs:{"id":"appendix-cli-syntax-reference"}},[_c('span',[_v("Appendix: CLI syntax reference")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#appendix-cli-syntax-reference","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{staticClass:"lead"},[_c('p',[_v("The command "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar")]),_v(" takes several flags.")])]),_v(" "),_c('box',[_c('p',[_c('strong',[_v("Examples")]),_v(":")]),_v(" "),_c('p',[_v("An example of a command using most parameters:"),_c('br'),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar --repos https://github.com/reposense/RepoSense.git --output ./report_folder --since 31/1/2017 --until 31/12/2018 --formats java adoc xml --view --ignore-standalone-config --last-modified-date --timezone UTC+08 --find-previous-authors --analyze-authorship --originality-threshold 0.66")])]),_v(" "),_c('p',[_v("Same command as above but using most parameters in alias format:"),_c('br'),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar -r https://github.com/reposense/RepoSense.git -o ./report_folder -s 31/1/2017 -u 31/12/2018 -f java adoc xml -v -i -l -t UTC+08 -F -A -ot 0.66")])])]),_v(" "),_c('p',[_v("The section below provides explanations for each of the flags.")]),_v(" "),_c('h3',{attrs:{"id":"analyze-authorship-a"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--analyze-authorship")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-A")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#analyze-authorship-a","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--analyze-authorship")])]),_v(": Performs further analysis to distinguish between partial and full credit attribution for\nlines of code assigned to the author.")]),_v(" "),_c('ul',[_c('li',[_v("Default: this feature is turned "),_c('em',[_c('strong',[_v("off")])]),_v(" by default and the author will receive partial credits for all lines of\ncode, as the code lines are at least partial credit but may not qualify for full credit.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-A")]),_v(" (upper case)")]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--analyze-authorship")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-A")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("A darker background colour represents full credit, while a lighter background colour represents partial credit.")]),_v(" "),_c('p',[_v("If the code is attributed to a different author by the user via "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("@@author")]),_v(" tag, then the new author will be given\npartial credit.")])]),_v(" "),_c('h3',{attrs:{"id":"assets-a"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--assets")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-a")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#assets-a","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{attrs:{"id":"section-assets"}},[_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--assets ASSETS_DIRECTORY")])]),_v(": Specifies where to place assets for report generation.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ASSETS_DIRECTORY")]),_v(" The directory containing the assets files. A "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("favicon.ico")]),_v(" file can be placed here to customize the favicon of the dashboard, while a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("title.md")]),_v(" file can be placed to customize the "),_c('a',{attrs:{"href":"https://reposense.org/ug/customizingReports.html#add-a-title"}},[_v("title")]),_v(" of the report using "),_c('a',{attrs:{"href":"https://www.markdownguide.org/basic-syntax/"}},[_v("Markdown syntax")]),_v(".")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-a")])]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--assets ./assets")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-a ./assets")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("If "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--assets")]),_v(" is not specified, RepoSense looks for assets in the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./assets")]),_v(" directory.")])])])],1),_v(" "),_c('h3',{attrs:{"id":"config-c"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--config")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-c")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#config-c","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{attrs:{"id":"section-config"}},[_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--config CONFIG_DIRECTORY")])]),_v(": Specifies that config files located in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("CONFIG_DIRECTORY")]),_v(" should be used to customize the report.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("CONFIG_DIRECTORY")]),_v(" The directory containing the config files. Should contain a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(" file. Optionally, can contain an "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(" file or/and a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("group-config.csv")]),_v(" file or/and a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("report-config.json")]),_v(" file or/and a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("blurbs.md")]),_v(" file.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-c")])]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar --config ./config")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("Cannot be used with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repos")]),_v(". The "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repos")]),_v(" flag will take precedence over this flag.")]),_v(" "),_c('li',[_v("If both "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repos")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--config")]),_v(" are not specified, RepoSense looks for config files in the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./config")]),_v(" directory.")]),_v(" "),_c('li',[_v("Config files must follow "),_c('a',{attrs:{"href":"/RepoSense/ug/configFiles.html"}},[_v("this")]),_v(" format.")])])])],1),_v(" "),_c('h3',{attrs:{"id":"formats-f"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--formats")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-f")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#formats-f","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--formats LIST_OF_FORMATS")])]),_v(": Specifies which file extensions to be included in the analysis.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("LIST_OF_FORMATS")]),_v(" A space-separated list of file extensions that should be included in the analysis."),_c('br'),_v("\nDefault: all file formats")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-f")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--formats css fxml gradle")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-f css fxml gradle")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Binary file formats, such as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("jpg")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("png")]),_v(","),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("exe")]),_v(","),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("zip")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("rar")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("docx")]),_v(", and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("pptx")]),_v(", all will be labelled as the file type "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("binary")]),_v(" in the generated report.")])]),_v(" "),_c('h3',{attrs:{"id":"find-previous-authors-f"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--find-previous-authors")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-F")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#find-previous-authors-f","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--find-previous-authors")])]),_v(": Utilizes Git blame's ignore revisions functionality, RepoSense will attempt to blame the line changes caused by commits in the ignore commit list to the previous authors who altered those lines (if available).")]),_v(" "),_c('ul',[_c('li',[_v("Default: RepoSense will assume that no authors are responsible for the code changes in the lines altered by commits in the ignore commit list.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-F")]),_v(" (uppercase F)")]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--find-previous-authors")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-F")])])]),_v(" "),_c('h3',{attrs:{"id":"help-h"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--help")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-h")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#help-h","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--help")])]),_v(": Shows the help message.")]),_v(" "),_c('ul',[_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-h")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Cannot be used with any other flags. This flag takes precedence over all other flags.")])]),_v(" "),_c('h3',{attrs:{"id":"ignore-standalone-config-i"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--ignore-standalone-config")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-i")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#ignore-standalone-config-i","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--ignore-standalone-config")])]),_v(": Specifies that the standalone config file in the repo should be ignored.")]),_v(" "),_c('ul',[_c('li',[_v("Default: the standalone config file is not ignored")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-i")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--ignore-standalone-config")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-i")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("This flag overrides the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Ignore standalone config")]),_v(" field in the CSV config file.")])]),_v(" "),_c('h3',{attrs:{"id":"ignore-filesize-limit-i"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--ignore-filesize-limit")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-I")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#ignore-filesize-limit-i","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--ignore-filesize-limit")])]),_v(": Specifies that the file size limit (both default and user-defined) should be ignored during the analysis.")]),_v(" "),_c('ul',[_c('li',[_v("Default: the file size limit is not ignored")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-I")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--ignore-filesize-limit")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-I")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("All files are subject to a default file size limit or a custom size limit set by the user. Most files should not be\naffected by the default size limit. This flag can be useful for including files in your report that are affected by\nthe size limit. Note that this flag may result in large report sizes and/or slower report generation.")])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("This flag overrides the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Ignore file size limit")]),_v(" field in the CSV config file.")])]),_v(" "),_c('h3',{attrs:{"id":"last-modified-date-l"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--last-modified-date")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-l")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#last-modified-date-l","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--last-modified-date")])]),_v(": Specifies that the last modified date of each line of code should be added to "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("authorship.json")]),_v(".")]),_v(" "),_c('ul',[_c('li',[_v("Default: the last modified date of each line of code will not be added to "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("authorship.json")])]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-l")]),_v(" (lowercase L)")]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--last-modified-date")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-l")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("Cannot be used with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--shallow-cloning")]),_v(". This may result in an incorrect last modified date.")]),_v(" "),_c('li',[_v("The last modified dates will be in the same timezone specified with the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--timezone")]),_v(" flag.")])])]),_v(" "),_c('h3',{attrs:{"id":"originality-threshold-ot"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--originality-threshold")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-ot")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#originality-threshold-ot","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--originality-threshold [VALUE]")])]),_v(": Specifies the cut-off point for partial and full credit\nin "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--analyze-authorship")]),_v(". Author will be given full credit if their contribution exceeds this threshold, else partial\ncredit is given.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("VALUE")]),_v(" Optional. Acceptable range: [0.0, 1.0]."),_c('br'),_v("\nDefault: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("0.51")])]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-ot")])]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--originality-threshold 0.66")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-ot 0.66")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("Requires "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--analyze-authorship")]),_v(" flag.")]),_v(" "),_c('li',[_v("An author's contribution, or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("originality score")]),_v(", is calculated using Levenshtein Distance (Edit Distance) algorithm.\nWe compare the difference between current code line and its previous versions.")])])]),_v(" "),_c('h3',{attrs:{"id":"output-o"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--output")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-o")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#output-o","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--output OUTPUT_DIRECTORY")])]),_v(": Indicates where to save the report generated.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("OUTPUT_DIRECTORY")]),_v(" The location for the generated "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("reposense-report")]),_v(" folder."),_c('br'),_v("\nDefault: current directory")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-o")])]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--output ./foo")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-o ./foo")]),_v(" (the report will be in the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./foo/reposense-report")]),_v(" folder)")])]),_v(" "),_c('h3',{attrs:{"id":"period-p"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--period")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-p")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#period-p","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--period PERIOD")])]),_v(": Specifies the period of analysis window.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("PERIOD")]),_v(" The period of analysis window, in the format "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("nd")]),_v(" (for n days) or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("nw")]),_v(" (for n weeks). It is used to calculate end date if only start date is specified, or calculate end date if only start date is specified.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-p")])]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--period 30d")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--period 4w")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("If both start date and end date are not specified, the date of generating the report will be taken as the end date.")]),_v(" "),_c('li',[_v("May analyze the incorrect date range if used with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since d1")]),_v(". The program will throw a warning.")]),_v(" "),_c('li',[_v("Cannot be used with both "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--until")]),_v(". The program will throw an exception.")])])]),_v(" "),_c('h3',{attrs:{"id":"repo-repos-r"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repo")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repos")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-r")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#repo-repos-r","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repo REPO_LOCATION")])]),_v(": Specifies which repositories to analyze.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("REPO_LOCATION")]),_v(" A list of URLs or the disk location of the git repositories to analyze, separated by spaces.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-r")])]),_v(" "),_c('li',[_v("Examples:\n"),_c('ul',[_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repos https://github.com/reposense/RepoSense.git")])]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repo https://github.com/reposense/RepoSense.git c:/myRepose/foo/bar")]),_v(": analyzes the two specified repos (one remote, one local) and generates one report containing details of both.")])])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Cannot be used with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--config")]),_v(". This flag takes precedence over "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--config")]),_v(".")])]),_v(" "),_c('h3',{attrs:{"id":"shallow-cloning-s"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--shallow-cloning")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-S")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#shallow-cloning-s","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--shallow-cloning")])]),_v(": Clones repositories using Git's shallow cloning functionality, which can significantly reduce the time taken to clone large repositories. However, the flag should not be used for smaller repositories where the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(".git")]),_v(" file is smaller than 500 MB, as it would create overhead.")]),_v(" "),_c('ul',[_c('li',[_v("Default: RepoSense does not clone repositories using Git's shallow cloning functionality.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-S")]),_v(" (uppercase S)")]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--shallow-cloning")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-S")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Cannot be used with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--last-modified-date")]),_v(". This may result in an incorrect last modified date.")])]),_v(" "),_c('h3',{attrs:{"id":"since-s"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-s")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#since-s","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since START_DATE")])]),_v(": Specifies the start date for the period to be analyzed.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("START_DATE")]),_v(" The first day of the period to be analyzed, in the format "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("DD/MM/YYYY")]),_v("."),_c('br'),_v("\nDefault: one month before the current date")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-s")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since 21/10/2017")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-s 21/10/2017")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("If the start date is not specified, only commits made one month before the end date (if specified) or the date of generating the report, will be captured and analyzed.")]),_v(" "),_c('li',[_v("If "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("d1")]),_v(" is specified as the start date ("),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since d1")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-s d1")]),_v("), then the program will search for the earliest commit date of all repositories and use that as the start date.")]),_v(" "),_c('li',[_v("If "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("d1")]),_v(" is specified together with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--period")]),_v(", then the program will warn that the date range being analyzed may be incorrect.")])])]),_v(" "),_c('h3',{attrs:{"id":"timezone-t"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--timezone")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-t")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#timezone-t","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--timezone ZONE_ID")])]),_v(": Indicates the timezone to be used for the analysis.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ZONE_ID")]),_v(" The timezone in the format "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ZONE_ID[±hh[mm]]")]),_v("."),_c('br'),_v("\nDefault: system's default timezone")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-t")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--timezone UTC+08")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-t UTC-1030")])])]),_v(" "),_c('h3',{attrs:{"id":"until-u"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--until")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-u")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#until-u","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--until END_DATE")])]),_v(": Specifies the end date of the analysis period.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("END_DATE")]),_v(" The last date of the period to be analyzed, in the format "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("DD/MM/YYYY")]),_v("."),_c('br'),_v("\nDefault: current date")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-u")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--until 21/10/2017")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-u 21/10/2017")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Note: If the end date is not specified, the date of generating the report will be taken as the end date.")])]),_v(" "),_c('h3',{attrs:{"id":"version-v"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--version")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-V")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#version-v","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--version")])]),_v(": Shows the version of RepoSense.")]),_v(" "),_c('ul',[_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-V")]),_v(" (upper case)")])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Cannot be used with any other flags. This flag takes precedence over all other flags other than "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--help")]),_v(".")])]),_v(" "),_c('h3',{attrs:{"id":"view-v"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--view")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-v")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#view-v","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--view [REPORT_FOLDER]")])]),_v(": Specifies that the report should be opened in the default browser.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("REPORT_FOLDER")]),_v(" Optional. If specified, no analysis will be performed and the report specified by the argument will be opened."),_c('br'),_v("\nDefault: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./reposense-report")])]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-v")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--view")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-v")])])])],1)])],1),_v(" "),_c('p')]),_v(" "),_m(12),_v(" "),_m(13),_v(" "),_m(14),_v(" "),_m(15),_v(" "),_m(16),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("See "),_c('a',{attrs:{"href":"https://github.com/vuejs/vue-devtools"}},[_v("vue-devtools project home")]),_v(" page for more details.")])]),_v(" "),_m(17),_v(" "),_m(18),_v(" "),_m(19),_v(" "),_m(20),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Read "),_c('a',{attrs:{"href":"https://docs.cypress.io/api/commands/document.html#Syntax"}},[_v("Cypress's Documentation")]),_v(" to familiarize yourself with its syntax and "),_c('a',{attrs:{"href":"https://docs.cypress.io/guides/guides/debugging.html#Log-Cypress-events"}},[_v("Cypress's debugging guide")]),_v(" to tackle problems with your tests.")])]),_v(" "),_c('box',{attrs:{"type":"warning","seamless":""}},[_c('p',[_v("Note that it is "),_c('strong',[_v("compulsory")]),_v(" to add tests for the new front-end changes that you made to prevent regression bugs, except for trivial changes that are unlikely to cause any regression or other situations where testing does not apply to the change.")])]),_v(" "),_m(21),_v(" "),_m(22),_v(" "),_m(23),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("If you encountered an invalid browser error, ensure that you have "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Chrome")]),_v(" installed in the default installation directory. Otherwise, follow the instructions "),_c('a',{attrs:{"href":"https://docs.cypress.io/guides/guides/debugging.html#Launching-browsers"}},[_v("here")]),_v(" to create symbolic links so Cypress can locate "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Chrome")]),_v(" in your system.")])]),_v(" "),_m(24),_v(" "),_m(25),_v(" "),_m(26),_v(" "),_m(27),_v(" "),_m(28),_v(" "),_m(29),_v(" "),_m(30),_v(" "),_c('p',[_c('strong',[_v("To show some content only in the "),_c('tooltip',{scopedSlots:_u([{key:"content",fn:function(){return [_v("i.e., "),_c('a',{attrs:{"href":"https://reposense.org"}},[_v("https://reposense.org")])]},proxy:true}])},[_v("production website")])],1),_v(", add the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("tags=\"production\"")]),_v(" attribute to the HTML element enclosing the content. Similarly, "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("tags=\"dev\"")]),_v(" will make the content appear only in the "),_c('tooltip',{scopedSlots:_u([{key:"content",fn:function(){return [_v("i.e., "),_c('a',{attrs:{"href":"https://reposense.org/RepoSense"}},[_v("https://reposense.org/RepoSense")])]},proxy:true}])},[_v("dev website")]),_v(".")],1),_v(" "),_m(31)],1),_v(" "),_c('overlay-source',{staticClass:"fixed-header-padding",attrs:{"id":"page-nav","tag-name":"nav","to":"page-nav"}},[_c('div',{staticClass:"nav-component slim-scroll"},[_c('overlay-source',{staticClass:"nav nav-pills flex-column my-0 small no-flex-wrap",attrs:{"id":"mb-page-nav","tag-name":"nav","to":"mb-page-nav"}},[_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#workflow"}},[_v("Workflow‎")]),_v(" "),_c('nav',{staticClass:"nav nav-pills flex-column my-0 nested no-flex-wrap"},[_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#find-the-suitable-pull-requests"}},[_v("Find the suitable pull requests‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#following-the-coding-standards"}},[_v("Following the coding standards‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#running-the-app-from-code"}},[_v("Running the app from code‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#debugging-front-end"}},[_v("Debugging (front-end)‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#testing-front-end"}},[_v("Testing (front-end)‎")]),_v(" "),_c('nav',{staticClass:"nav nav-pills flex-column my-0 nested no-flex-wrap"},[_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#writing-tests"}},[_v("Writing tests‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#running-tests"}},[_v("Running tests‎")])]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#testing-back-end"}},[_v("Testing (back-end)‎")]),_v(" "),_c('nav',{staticClass:"nav nav-pills flex-column my-0 nested no-flex-wrap"},[_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#running-tests-2"}},[_v("Running tests‎")])]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#writing-documentation"}},[_v("Writing documentation‎")])])])],1)])],1),_v(" "),_m(32)])} }; var pageVueStaticRenderFns = [function anonymous( ) { @@ -101,6 +101,6 @@ with(this){return _c('p',[_c('strong',[_v("This project uses "),_c('a',{attrs:{" with(this){return _c('pre',[_c('code',{pre:true,attrs:{"class":"hljs html"}},[_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-tag"}},[_v("<"),_c('span',{pre:true,attrs:{"class":"hljs-name"}},[_v("span")]),_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("tags")]),_v("="),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"production\"")]),_v(">")]),_v("This will appear in the production website only."),_c('span',{pre:true,attrs:{"class":"hljs-tag"}},[_v("")]),_v("\n")]),_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-tag"}},[_v("<"),_c('span',{pre:true,attrs:{"class":"hljs-name"}},[_v("span")]),_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("tags")]),_v("="),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"dev\"")]),_v(">")]),_v("This will appear in the dev website only."),_c('span',{pre:true,attrs:{"class":"hljs-tag"}},[_v("")]),_v("\n")]),_c('span',[_v("This will appear in both sites.\n")])])])} },function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('small',[_v("["),_c('span',[_c('strong',[_v("Powered by")])]),_v(" "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"30"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.2")]),_v(", generated on Tue, 14 May 2024, 13:12:51 UTC]")])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('small',[_v("["),_c('span',[_c('strong',[_v("Powered by")])]),_v(" "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"30"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.2")]),_v(", generated on Thu, 16 May 2024, 22:31:25 UTC]")])])])} }]; \ No newline at end of file diff --git a/index.html b/index.html index 568e2f4e68..c3f55ca0c5 100644 --- a/index.html +++ b/index.html @@ -15,7 +15,7 @@

    RepoSense

    Visualize programmer activities across git repositories... -

    RepoSense overview

    RepoSense can generate interactive visualizations of programmer activities, even across multiple repositories. It's ideal for educators and managers to get insights into the programming activities of their mentees. The visualizations can be easily shared with others (e.g., as an online dashboard), and updating the visualizations periodically can be automated.

    Some example insights RepoSense can provide:

    Insights about the code

    • Which part of the code was written by Tom? How many lines? How many files?
    • Which test cases were written by Kim?
    • Which commit messages were written by Serene?

    Insights about the type of work

    • Which portion of Jacob's code is documentation?
    • Who hasn't written any test code yet?
    • Which project did Jolene contribute to in the last month?

    Insights about the timing of work

    • Who is putting in the consistent effort?
    • Who waits till the deadline to do the work?
    • Who hasn't started any work yet?

    Insights based on comparisons

    • Which programmers/teams are falling behind?
    • How does everyone compare in their front-end coding work over the past two weeks?
    • Who are the top 10 code contributors?
    [Powered by MarkBind 5.5.2, generated on Tue, 14 May 2024, 13:12:51 UTC]
    +

    RepoSense overview

    RepoSense can generate interactive visualizations of programmer activities, even across multiple repositories. It's ideal for educators and managers to get insights into the programming activities of their mentees. The visualizations can be easily shared with others (e.g., as an online dashboard), and updating the visualizations periodically can be automated.

    Some example insights RepoSense can provide:

    Insights about the code

    • Which part of the code was written by Tom? How many lines? How many files?
    • Which test cases were written by Kim?
    • Which commit messages were written by Serene?

    Insights about the type of work

    • Which portion of Jacob's code is documentation?
    • Who hasn't written any test code yet?
    • Which project did Jolene contribute to in the last month?

    Insights about the timing of work

    • Who is putting in the consistent effort?
    • Who waits till the deadline to do the work?
    • Who hasn't started any work yet?

    Insights based on comparisons

    • Which programmers/teams are falling behind?
    • How does everyone compare in their front-end coding work over the past two weeks?
    • Who are the top 10 code contributors?
    [Powered by MarkBind 5.5.2, generated on Thu, 16 May 2024, 22:31:25 UTC]
    diff --git a/index.page-vue-render.js b/index.page-vue-render.js index 8550718471..ec3e65f8cf 100644 --- a/index.page-vue-render.js +++ b/index.page-vue-render.js @@ -26,6 +26,6 @@ with(this){return _c('ul',[_c('li',[_v("Which programmers/teams are falling behi with(this){return _c('div',{staticClass:"jumbotron jumbotron-fluid pt-2"},[_c('div',{staticClass:"container"},[_c('div',{staticClass:"container pt-2"},[_c('div',{staticClass:"row"}),_v(" "),_c('div',{staticClass:"row"},[_c('div',{staticClass:"col-sm"},[_c('p',[_c('a',{attrs:{"href":"/RepoSense/showcase.html"}},[_c('strong',[_v("SHOWCASE")]),_v(" of use cases")])]),_v(" "),_c('p',[_c('a',{attrs:{"href":"/RepoSense/about.html"}},[_c('strong',[_v("ABOUT")]),_v(" us")])]),_v(" "),_c('p',[_c('a',{attrs:{"href":"/RepoSense/contact.html"}},[_c('strong',[_v("CONTACT")]),_v(" us")])]),_v(" "),_c('p',[_c('a',{attrs:{"href":"https://github.com/reposense/RepoSense"}},[_c('strong',[_c('span',{staticClass:"fab fa-github",attrs:{"aria-hidden":"true"}}),_v(" GitHub")])])]),_v(" "),_c('hr'),_v(" "),_c('small',[_c('p',[_v("This website was built using MarkBind.")]),_v(" "),_c('p',[_c('a',{attrs:{"href":"http://markbind.org"}},[_c('img',{attrs:{"src":"https://markbind.org/images/logo-lightbackground.png","width":"150"}})])]),_v(" "),_c('p',[_v("Deploy previews are powered by Netlify and Surge.")]),_v(" "),_c('p',[_c('a',{attrs:{"href":"https://www.netlify.com"}},[_c('img',{attrs:{"src":"https://www.netlify.com/img/global/badges/netlify-color-bg.svg"}})]),_v(" "),_c('a',{attrs:{"href":"https://surge.sh"}},[_c('img',{attrs:{"width":"55px","src":"https://surge.sh/images/logos/svg/surge-logo.svg"}})])])]),_c('p')]),_v(" "),_c('div',{staticClass:"col-sm"},[_c('p',[_c('strong',[_c('strong',[_v("USER GUIDE")])])]),_v(" "),_c('ul',[_c('li',[_c('p',[_c('a',{attrs:{"href":"/RepoSense/ug/index.html"}},[_c('strong',[_v("Overview")])])])]),_v(" "),_c('li',[_c('p',[_c('a',{attrs:{"href":"/RepoSense/ug/generatingReports.html"}},[_c('strong',[_v("Generating reports")])])])]),_v(" "),_c('li',[_c('p',[_c('a',{attrs:{"href":"/RepoSense/ug/usingReports.html"}},[_c('strong',[_v("Using reports")])])])]),_v(" "),_c('li',[_c('p',[_c('a',{attrs:{"href":"/RepoSense/ug/customizingReports.html"}},[_c('strong',[_v("Customizing reports")])])])]),_v(" "),_c('li',[_c('p',[_c('a',{attrs:{"href":"/RepoSense/ug/sharingReports.html"}},[_c('strong',[_v("Sharing reports")])])])]),_v(" "),_c('li',[_c('p',[_c('strong',[_v("Appendices")])]),_v(" "),_c('ul',[_c('li',[_c('p',[_c('a',{attrs:{"href":"/RepoSense/ug/cli.html"}},[_v("CLI syntax reference")])])]),_v(" "),_c('li',[_c('p',[_c('a',{attrs:{"href":"/RepoSense/ug/configFiles.html"}},[_v("Config files format")])])]),_v(" "),_c('li',[_c('p',[_c('a',{attrs:{"href":"/RepoSense/ug/authorConfigSyntax.html"}},[_v("Advanced syntax: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")])])])]),_v(" "),_c('li',[_c('p',[_c('a',{attrs:{"href":"/RepoSense/ug/usingAuthorTags.html"}},[_v("Using "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("@@author")]),_v(" tags")])])]),_v(" "),_c('li',[_c('p',[_c('a',{attrs:{"href":"/RepoSense/ug/withNetlify.html"}},[_v("RepoSense with Netlify")])])]),_v(" "),_c('li',[_c('p',[_c('a',{attrs:{"href":"/RepoSense/ug/withGithubActions.html"}},[_v("RepoSense with GitHub Actions")])])]),_v(" "),_c('li',[_c('p',[_c('a',{attrs:{"href":"/RepoSense/ug/withTravis.html"}},[_v("RepoSense with Travis")])])]),_v(" "),_c('li',[_c('p',[_c('a',{attrs:{"href":"/RepoSense/ug/runSh.html"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("run.sh")]),_v(" format")])])]),_v(" "),_c('li',[_c('p',[_c('a',{attrs:{"href":"/RepoSense/ug/faq.html"}},[_v("FAQ")])])]),_v(" "),_c('li',[_c('p',[_c('a',{attrs:{"href":"/RepoSense/ug/troubleshooting.html"}},[_v("Troubleshooting")])])])])])])]),_v(" "),_c('div',{staticClass:"col-sm"},[_c('p',[_c('strong',[_c('strong',[_v("DEVELOPER GUIDE")])])]),_v(" "),_c('ul',[_c('li',[_c('p',[_c('a',{attrs:{"href":"/RepoSense/dg/index.html"}},[_c('strong',[_v("Contributing")])])])]),_v(" "),_c('li',[_c('p',[_c('a',{attrs:{"href":"/RepoSense/dg/settingUp.html"}},[_c('strong',[_v("Setting up")])])])]),_v(" "),_c('li',[_c('p',[_c('a',{attrs:{"href":"/RepoSense/dg/learningBasics.html"}},[_c('strong',[_v("Learning the basics")])])])]),_v(" "),_c('li',[_c('p',[_c('a',{attrs:{"href":"/RepoSense/dg/workflow.html"}},[_c('strong',[_v("Workflow")])])])]),_v(" "),_c('li',[_c('p',[_c('strong',[_v("Design and implementation")])]),_v(" "),_c('ul',[_c('li',[_c('p',[_c('a',{attrs:{"href":"/RepoSense/dg/architecture.html"}},[_v("Architecture")])])]),_v(" "),_c('li',[_c('p',[_c('a',{attrs:{"href":"/RepoSense/dg/report.html"}},[_v("HTML report")])])])])]),_v(" "),_c('li',[_c('p',[_c('a',{attrs:{"href":"/RepoSense/dg/projectManagement.html"}},[_c('strong',[_v("Project management")])])])]),_v(" "),_c('li',[_c('p',[_c('a',{attrs:{"href":"/RepoSense/dg/devOpsGuide.html"}},[_c('strong',[_v("DevOps guide")])])])]),_v(" "),_c('li',[_c('p',[_c('strong',[_v("Appendices")])]),_v(" "),_c('ul',[_c('li',[_c('p',[_c('a',{attrs:{"href":"/RepoSense/dg/cli.html"}},[_v("CLI syntax reference")])])]),_v(" "),_c('li',[_c('p',[_c('a',{attrs:{"href":"/RepoSense/dg/styleGuides.html"}},[_v("Style guides")])])])])])])])])])])])} },function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('small',[_v("["),_c('span',[_c('strong',[_v("Powered by")])]),_v(" "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"30"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.2")]),_v(", generated on Tue, 14 May 2024, 13:12:51 UTC]")])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('small',[_v("["),_c('span',[_c('strong',[_v("Powered by")])]),_v(" "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"30"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.2")]),_v(", generated on Thu, 16 May 2024, 22:31:25 UTC]")])])])} }]; \ No newline at end of file diff --git a/showcase.html b/showcase.html index 9aaec8deac..84a650790b 100644 --- a/showcase.html +++ b/showcase.html @@ -14,7 +14,7 @@

    Showcase

    Case 1: Monitoring student programmers (individual projects)

    • Scenario: RepoSense is used to monitor a Software Engineering course in which students build a project over 8 weeks.

    • Links: report | repo containing the settings

    • Example usages:

      • To compare students based on the amount of code written, we can sort by contribution, as done in this view.
      • This view shows us code written by a specific student.

    Case 2: Monitoring student programmers (team projects)

    • Scenario: Similar to case 1 above, but this time students are doing team projects.

    • Links: report | settings

    • Example usages:

      • To find the breakdown of the work done, we can tick the breakdown by file type checkbox, as shown in this view. After that, we can filter out certain file types by un-ticking the file type.
      • To find how teams compare in terms of total work done, we can tick the merge all groups check-box and sort groups by Contribution, as seen in this view. Also, note how to reduce clutter.
      • This view shows the activities near the submission deadline of 8 November 2021 (note how some have overshot the deadline and some others show a frenzy of activities very near to the deadline).

    Case 3: Monitoring student programmers (multiple external projects)

    • Scenario: Similar to cases 1 and 2 above, but this time, each student works on multiple projects. Furthermore, most projects are external OSS projects, not within the control of the teacher.

    • Links: report | settings

    • Example usages:

      • This view shows the commit messages written by a specific student.
      • Note how we can use the group by drop-down to organize activities around projects or individual authors.
      • Similarly, we can use the merge all groups check-box to see the sum of activities in a specific project or by a specific student.
    [Powered by MarkBind 5.5.2, generated on Tue, 14 May 2024, 13:12:51 UTC]
    +

    Showcase

    Case 1: Monitoring student programmers (individual projects)

    • Scenario: RepoSense is used to monitor a Software Engineering course in which students build a project over 8 weeks.

    • Links: report | repo containing the settings

    • Example usages:

      • To compare students based on the amount of code written, we can sort by contribution, as done in this view.
      • This view shows us code written by a specific student.

    Case 2: Monitoring student programmers (team projects)

    • Scenario: Similar to case 1 above, but this time students are doing team projects.

    • Links: report | settings

    • Example usages:

      • To find the breakdown of the work done, we can tick the breakdown by file type checkbox, as shown in this view. After that, we can filter out certain file types by un-ticking the file type.
      • To find how teams compare in terms of total work done, we can tick the merge all groups check-box and sort groups by Contribution, as seen in this view. Also, note how to reduce clutter.
      • This view shows the activities near the submission deadline of 8 November 2021 (note how some have overshot the deadline and some others show a frenzy of activities very near to the deadline).

    Case 3: Monitoring student programmers (multiple external projects)

    • Scenario: Similar to cases 1 and 2 above, but this time, each student works on multiple projects. Furthermore, most projects are external OSS projects, not within the control of the teacher.

    • Links: report | settings

    • Example usages:

      • This view shows the commit messages written by a specific student.
      • Note how we can use the group by drop-down to organize activities around projects or individual authors.
      • Similarly, we can use the merge all groups check-box to see the sum of activities in a specific project or by a specific student.
    [Powered by MarkBind 5.5.2, generated on Thu, 16 May 2024, 22:31:25 UTC]
    diff --git a/showcase.page-vue-render.js b/showcase.page-vue-render.js index ab8c2a94c5..bd8d3e1acb 100644 --- a/showcase.page-vue-render.js +++ b/showcase.page-vue-render.js @@ -38,6 +38,6 @@ with(this){return _c('h3',{attrs:{"id":"case-3-monitoring-student-programmers-mu with(this){return _c('ul',[_c('li',[_c('p',[_c('strong',[_v("Scenario:")]),_v(" Similar to cases 1 and 2 above, but this time, each student works on multiple projects. Furthermore, most projects are external OSS projects, not within the control of the teacher.")])]),_v(" "),_c('li',[_c('p',[_c('strong',[_v("Links:")]),_v(" "),_c('a',{attrs:{"href":"https://nus-cs3281.github.io/2020-dashboard/?search=&sort=groupTitle&sortWithin=title&since=2019-12-01&timeframe=commit&mergegroup=&groupSelect=groupByRepos&breakdown=false"}},[_v("report")]),_v(" | "),_c('a',{attrs:{"href":"https://github.com/nus-cs3281/2020-dashboard"}},[_v("settings")])])]),_v(" "),_c('li',[_c('p',[_c('strong',[_v("Example usages:")])]),_v(" "),_c('ul',[_c('li',[_c('a',{attrs:{"href":"https://nus-cs3281.github.io/2020-dashboard/?search=&sort=groupTitle&sortWithin=title&since=2019-12-01&timeframe=commit&mergegroup=&groupSelect=groupByRepos&breakdown=false&tabOpen=true&tabType=zoom&zA=anubh-v&zR=CATcher-org%2FCATcher%5Bmaster%5D&zACS=153.40466101694915&zS=2019-12-01&zFS=&zU=2021-06-15&zMG=false&zFTF=commit&zFGS=groupByRepos&zFR=false"}},[_v("This view")]),_v(" shows the commit messages written by a specific student.")]),_v(" "),_c('li',[_v("Note how we can use the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("group by")]),_v(" drop-down to organize activities around projects or individual authors.")]),_v(" "),_c('li',[_v("Similarly, we can use the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("merge all groups")]),_v(" check-box to see the sum of activities in a specific project or by a specific student.")])])])])} },function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('small',[_v("["),_c('span',[_c('strong',[_v("Powered by")])]),_v(" "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"30"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.2")]),_v(", generated on Tue, 14 May 2024, 13:12:51 UTC]")])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('small',[_v("["),_c('span',[_c('strong',[_v("Powered by")])]),_v(" "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"30"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.2")]),_v(", generated on Thu, 16 May 2024, 22:31:25 UTC]")])])])} }]; \ No newline at end of file diff --git a/ug/authorConfigSyntax.html b/ug/authorConfigSyntax.html index 5cf77face1..602fb28ae5 100644 --- a/ug/authorConfigSyntax.html +++ b/ug/authorConfigSyntax.html @@ -14,7 +14,7 @@

    You are looking at the user documentation for the most recent master branch of RepoSense (not released to the public yet). The documentation for the latest public release is here.

    Appendix: author-config.csv advanced syntax

    Given below are the advanced syntax available for author-config.csv.

    Multiple Repository's Location per author

    Specifying multiple Repository's Location

    To specify multiple Repository's Location in a single row, we can use a semicolon ; as a separator.

    Below is an example:

    Repository's Location Branch Author's Git Host ID ... Hidden columns
    https://github.com/reposense/RepoSense.git;https://github.com/MarkBind/markbind.git master sikai00 --

    We have now furnished author details for both repositories in a single row, instead of having two individual rows per Repository's Location.


    Specifying Repository's Location with one or more specific branches

    To list out one or more branches for a particular Repository's Location, we can use a pipe | separator to demarcate the different branches.

    Below is an example:

    Repository's Location Branch Author's Git Host ID ... Hidden columns
    https://github.com/reposense/RepoSense.git~master|release|cypress master sikai00 --

    We have now provided author details for three different branches in a single repo, using a single row.

    The branch specified through the delimiter syntax will take precedence over the Branch column.

    Using GitHub branch URL as Repository's Location

    We can also use GitHub branch URL as copied from the address bar directly, to be able to quickly use the URL to specify the Repository's Location and a specific Branch at the same time.

    Below is an example:

    Repository's Location Branch Author's Git Host ID ... Hidden columns
    https://github.com/reposense/RepoSense/tree/release sikai00 --

    There is no need to specify the Branch column now, as we have specified it through the GitHub branch URL.

    GitLab and BitBucket branch URL are not supported at the moment.

    Combining the advanced syntax

    It is possible to combine the above-mentioned advanced syntax. By doing so, we can go from:

    Repository's Location Branch Author's Git Host ID ... Hidden columns
    https://github.com/MarkBind/markbind/tree/vue3-migration sikai00 --
    https://github.com/reposense/RepoSense.git master sikai00 --
    https://github.com/reposense/RepoSense.git cypress sikai00 --

    to:

    Repository's Location Branch Author's Git Host ID ... Hidden columns
    https://github.com/MarkBind/markbind/tree/vue3-migration;https://github.com/reposense/RepoSense.git~master|cypress sikai00 --

    [Powered by MarkBind 5.5.2, generated on Tue, 14 May 2024, 13:12:51 UTC]
    +

    You are looking at the user documentation for the most recent master branch of RepoSense (not released to the public yet). The documentation for the latest public release is here.

    Appendix: author-config.csv advanced syntax

    Given below are the advanced syntax available for author-config.csv.

    Multiple Repository's Location per author

    Specifying multiple Repository's Location

    To specify multiple Repository's Location in a single row, we can use a semicolon ; as a separator.

    Below is an example:

    Repository's Location Branch Author's Git Host ID ... Hidden columns
    https://github.com/reposense/RepoSense.git;https://github.com/MarkBind/markbind.git master sikai00 --

    We have now furnished author details for both repositories in a single row, instead of having two individual rows per Repository's Location.


    Specifying Repository's Location with one or more specific branches

    To list out one or more branches for a particular Repository's Location, we can use a pipe | separator to demarcate the different branches.

    Below is an example:

    Repository's Location Branch Author's Git Host ID ... Hidden columns
    https://github.com/reposense/RepoSense.git~master|release|cypress master sikai00 --

    We have now provided author details for three different branches in a single repo, using a single row.

    The branch specified through the delimiter syntax will take precedence over the Branch column.

    Using GitHub branch URL as Repository's Location

    We can also use GitHub branch URL as copied from the address bar directly, to be able to quickly use the URL to specify the Repository's Location and a specific Branch at the same time.

    Below is an example:

    Repository's Location Branch Author's Git Host ID ... Hidden columns
    https://github.com/reposense/RepoSense/tree/release sikai00 --

    There is no need to specify the Branch column now, as we have specified it through the GitHub branch URL.

    GitLab and BitBucket branch URL are not supported at the moment.

    Combining the advanced syntax

    It is possible to combine the above-mentioned advanced syntax. By doing so, we can go from:

    Repository's Location Branch Author's Git Host ID ... Hidden columns
    https://github.com/MarkBind/markbind/tree/vue3-migration sikai00 --
    https://github.com/reposense/RepoSense.git master sikai00 --
    https://github.com/reposense/RepoSense.git cypress sikai00 --

    to:

    Repository's Location Branch Author's Git Host ID ... Hidden columns
    https://github.com/MarkBind/markbind/tree/vue3-migration;https://github.com/reposense/RepoSense.git~master|cypress sikai00 --

    [Powered by MarkBind 5.5.2, generated on Thu, 16 May 2024, 22:31:25 UTC]
    diff --git a/ug/authorConfigSyntax.page-vue-render.js b/ug/authorConfigSyntax.page-vue-render.js index ee2403b3b7..d5b5a1fee4 100644 --- a/ug/authorConfigSyntax.page-vue-render.js +++ b/ug/authorConfigSyntax.page-vue-render.js @@ -1,7 +1,7 @@ var pageVueRenderFn = function anonymous( ) { -with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"fixed":""}},[_c('navbar',{attrs:{"type":"dark"},scopedSlots:_u([{key:"brand",fn:function(){return [_c('a',{staticClass:"navbar-brand",attrs:{"href":"/index.html","title":"Home"}},[_c('img',{attrs:{"width":"30px","src":"/favicon.ico"}})])]},proxy:true},{key:"right",fn:function(){return [_c('li',[_c('form',{staticClass:"navbar-form"},[_c('searchbar',{attrs:{"data":searchData,"placeholder":"Search","on-hit":searchCallback,"menu-align-right":""}})],1)])]},proxy:true}])},[_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/index.html"}},[_v("HOME")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/showcase.html"}},[_v("SHOWCASE")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/ug/index.html"}},[_v("USER GUIDE")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/dg/index.html"}},[_v("DEVELOPER GUIDE")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/about.html"}},[_v("ABOUT")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/contact.html"}},[_v("CONTACT")])]),_v(" "),_c('li',{attrs:{"tags":"dev"}},[_c('a',{staticClass:"nav-link",attrs:{"href":"https://reposense.org","target":"_blank"}},[_c('span',[_c('span',{staticClass:"fas fa-external-link-alt",attrs:{"aria-hidden":"true"}}),_v(" PRODUCTION SITE")])])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"https://github.com/RepoSense/reposense","target":"_blank"}},[_c('span',[_c('span',{staticClass:"fab fa-github",attrs:{"aria-hidden":"true"}})])])])]),_v(" "),_m(0)],1),_v(" "),_c('div',{attrs:{"id":"flex-body"}},[_c('overlay-source',{staticClass:"fixed-header-padding",attrs:{"id":"site-nav","tag-name":"nav","to":"site-nav"}},[_c('div',{staticClass:"site-nav-top"},[_c('div',{staticClass:"font-weight-bold mb-2",staticStyle:{"font-size":"1.25rem"}},[_c('span',[_c('strong',[_c('strong',[_v("USER GUIDE")])])])])]),_v(" "),_c('div',{staticClass:"nav-component slim-scroll"},[_c('div',[_c('site-nav',[_c('overlay-source',{staticClass:"site-nav-list site-nav-list-root",attrs:{"tag-name":"ul","to":"mb-site-nav"}},[_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/index.html"}},[_c('strong',[_v("Overview")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/generatingReports.html"}},[_c('strong',[_v("Generating reports")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/usingReports.html"}},[_c('strong',[_v("Using reports")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/customizingReports.html"}},[_c('strong',[_v("Customizing reports")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/sharingReports.html"}},[_c('strong',[_v("Sharing reports")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('strong',[_v("Appendices")]),_v(" "),_c('div',{staticClass:"site-nav-dropdown-btn-container"},[_c('i',{staticClass:"site-nav-dropdown-btn-icon site-nav-rotate-icon",attrs:{"onclick":"handleSiteNavClick(this.parentNode.parentNode, false); event.stopPropagation();"}},[_c('span',{staticClass:"glyphicon glyphicon-menu-down",attrs:{"aria-hidden":"true"}})])])]),_c('ul',{staticClass:"site-nav-dropdown-container site-nav-dropdown-container-open site-nav-list"},[_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/cli.html"}},[_v("CLI syntax reference")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/configFiles.html"}},[_v("Config files format")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/authorConfigSyntax.html"}},[_v("Advanced syntax: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/usingAuthorTags.html"}},[_v("Using "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("@@author")]),_v(" tags")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/withNetlify.html"}},[_v("RepoSense with Netlify")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/withGithubActions.html"}},[_v("RepoSense with GitHub Actions")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/withTravis.html"}},[_v("RepoSense with Travis")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/runSh.html"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("run.sh")]),_v(" format")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/faq.html"}},[_v("FAQ")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/troubleshooting.html"}},[_v("Troubleshooting")])])])])])])],1)],1)])]),_v(" "),_c('div',{staticClass:"fixed-header-padding",attrs:{"id":"content-wrapper"}},[_m(1),_v(" "),_m(2),_v(" "),_m(3),_v(" "),_m(4),_v(" "),_m(5),_v(" "),_c('p',[_v("Below is an example:")]),_v(" "),_m(6),_m(7),_v(" "),_c('br'),_v(" "),_m(8),_v(" "),_m(9),_v(" "),_c('p',[_v("Below is an example:")]),_v(" "),_m(10),_c('p',[_v("We have now provided author details for three different branches in a single repo, using a single row.")]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("The branch specified through the delimiter syntax will take precedence over the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Branch")]),_v(" column.")])]),_v(" "),_m(11),_v(" "),_m(12),_v(" "),_c('p',[_v("Below is an example:")]),_v(" "),_m(13),_m(14),_v(" "),_c('box',{attrs:{"type":"warning","seamless":""}},[_c('p',[_v("GitLab and BitBucket branch URL are not supported at the moment.")])]),_v(" "),_m(15),_v(" "),_c('p',[_v("It is possible to combine the above-mentioned advanced syntax. By doing so, we can go from:")]),_v(" "),_m(16),_c('p',[_v("to:")]),_v(" "),_m(17),_c('br')],1)],1),_v(" "),_m(18)])} +with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"fixed":""}},[_c('navbar',{attrs:{"type":"dark"},scopedSlots:_u([{key:"brand",fn:function(){return [_c('a',{staticClass:"navbar-brand",attrs:{"href":"/index.html","title":"Home"}},[_c('img',{attrs:{"width":"30px","src":"/favicon.ico"}})])]},proxy:true},{key:"right",fn:function(){return [_c('li',[_c('form',{staticClass:"navbar-form"},[_c('searchbar',{attrs:{"data":searchData,"placeholder":"Search","on-hit":searchCallback,"menu-align-right":""}})],1)])]},proxy:true}])},[_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/index.html"}},[_v("HOME")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/showcase.html"}},[_v("SHOWCASE")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/ug/index.html"}},[_v("USER GUIDE")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/dg/index.html"}},[_v("DEVELOPER GUIDE")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/about.html"}},[_v("ABOUT")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/contact.html"}},[_v("CONTACT")])]),_v(" "),_c('li',{attrs:{"tags":"dev"}},[_c('a',{staticClass:"nav-link",attrs:{"href":"https://reposense.org","target":"_blank"}},[_c('span',[_c('span',{staticClass:"fas fa-external-link-alt",attrs:{"aria-hidden":"true"}}),_v(" PRODUCTION SITE")])])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"https://github.com/RepoSense/reposense","target":"_blank"}},[_c('span',[_c('span',{staticClass:"fab fa-github",attrs:{"aria-hidden":"true"}})])])])]),_v(" "),_m(0)],1),_v(" "),_c('div',{attrs:{"id":"flex-body"}},[_c('overlay-source',{staticClass:"fixed-header-padding",attrs:{"id":"site-nav","tag-name":"nav","to":"site-nav"}},[_c('div',{staticClass:"site-nav-top"},[_c('div',{staticClass:"font-weight-bold mb-2",staticStyle:{"font-size":"1.25rem"}},[_c('span',[_c('strong',[_c('strong',[_v("USER GUIDE")])])])])]),_v(" "),_c('div',{staticClass:"nav-component slim-scroll"},[_c('div',[_c('site-nav',[_c('overlay-source',{staticClass:"site-nav-list site-nav-list-root",attrs:{"tag-name":"ul","to":"mb-site-nav"}},[_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/index.html"}},[_c('strong',[_v("Overview")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/generatingReports.html"}},[_c('strong',[_v("Generating reports")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/usingReports.html"}},[_c('strong',[_v("Using reports")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/customizingReports.html"}},[_c('strong',[_v("Customizing reports")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/sharingReports.html"}},[_c('strong',[_v("Sharing reports")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('strong',[_v("Appendices")]),_v(" "),_c('div',{staticClass:"site-nav-dropdown-btn-container"},[_c('i',{staticClass:"site-nav-dropdown-btn-icon site-nav-rotate-icon",attrs:{"onclick":"handleSiteNavClick(this.parentNode.parentNode, false); event.stopPropagation();"}},[_c('span',{staticClass:"glyphicon glyphicon-menu-down",attrs:{"aria-hidden":"true"}})])])]),_c('ul',{staticClass:"site-nav-dropdown-container site-nav-dropdown-container-open site-nav-list"},[_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/cli.html"}},[_v("CLI syntax reference")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/configFiles.html"}},[_v("Config files format")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/authorConfigSyntax.html"}},[_v("Advanced syntax: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/usingAuthorTags.html"}},[_v("Using "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("@@author")]),_v(" tags")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/withNetlify.html"}},[_v("RepoSense with Netlify")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/withGithubActions.html"}},[_v("RepoSense with GitHub Actions")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/withTravis.html"}},[_v("RepoSense with Travis")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/runSh.html"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("run.sh")]),_v(" format")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/faq.html"}},[_v("FAQ")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/troubleshooting.html"}},[_v("Troubleshooting")])])])])])])],1)],1)])]),_v(" "),_c('div',{staticClass:"fixed-header-padding",attrs:{"id":"content-wrapper"}},[_m(1),_v(" "),_m(2),_v(" "),_m(3),_v(" "),_m(4),_v(" "),_m(5),_v(" "),_c('p',[_v("Below is an example:")]),_v(" "),_m(6),_m(7),_v(" "),_c('br'),_v(" "),_m(8),_v(" "),_m(9),_v(" "),_c('p',[_v("Below is an example:")]),_v(" "),_m(10),_c('p',[_v("We have now provided author details for three different branches in a single repo, using a single row.")]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("The branch specified through the delimiter syntax will take precedence over the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Branch")]),_v(" column.")])]),_v(" "),_m(11),_v(" "),_m(12),_v(" "),_c('p',[_v("Below is an example:")]),_v(" "),_m(13),_m(14),_v(" "),_c('box',{attrs:{"type":"warning","seamless":""}},[_c('p',[_v("GitLab and BitBucket branch URL are not supported at the moment.")])]),_v(" "),_m(15),_v(" "),_c('p',[_v("It is possible to combine the above-mentioned advanced syntax. By doing so, we can go from:")]),_v(" "),_m(16),_c('p',[_v("to:")]),_v(" "),_m(17),_c('br')],1),_v(" "),_c('overlay-source',{staticClass:"fixed-header-padding",attrs:{"id":"page-nav","tag-name":"nav","to":"page-nav"}},[_c('div',{staticClass:"nav-component slim-scroll"})])],1),_v(" "),_m(18)])} }; var pageVueStaticRenderFns = [function anonymous( ) { @@ -59,6 +59,6 @@ with(this){return _c('div',{staticClass:"table-responsive"},[_c('table',{staticC with(this){return _c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Repository's Location")]),_v(" "),_c('th',[_v("Branch")]),_v(" "),_c('th',[_v("Author's Git Host ID")]),_v(" "),_c('th',[_v("... Hidden columns")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://github.com/MarkBind/markbind/tree/vue3-migration;https://github.com/reposense/RepoSense.git~master|cypress")])]),_v(" "),_c('td'),_v(" "),_c('td',[_v("sikai00")]),_v(" "),_c('td',[_v("--")])])])])])} },function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('small',[_v("["),_c('span',[_c('strong',[_v("Powered by")])]),_v(" "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"30"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.2")]),_v(", generated on Tue, 14 May 2024, 13:12:51 UTC]")])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('small',[_v("["),_c('span',[_c('strong',[_v("Powered by")])]),_v(" "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"30"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.2")]),_v(", generated on Thu, 16 May 2024, 22:31:25 UTC]")])])])} }]; \ No newline at end of file diff --git a/ug/blurbs.html b/ug/blurbs.html index 6a47605eb5..86cfa546d0 100644 --- a/ug/blurbs.html +++ b/ug/blurbs.html @@ -18,7 +18,7 @@ Cypress branch of RepoSense

    ------------------------------------

    https://github.com/reposense/publish-RepoSense/tree/master -Publishing branch of RepoSense

    [Powered by MarkBind 5.5.2, generated on Tue, 14 May 2024, 13:12:51 UTC]
    +Publishing branch of RepoSense

    [Powered by MarkBind 5.5.2, generated on Thu, 16 May 2024, 22:31:25 UTC]
    diff --git a/ug/blurbs.page-vue-render.js b/ug/blurbs.page-vue-render.js index 1779ad620f..c9c97e248b 100644 --- a/ug/blurbs.page-vue-render.js +++ b/ug/blurbs.page-vue-render.js @@ -1,7 +1,7 @@ var pageVueRenderFn = function anonymous( ) { -with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"fixed":""}},[_c('navbar',{attrs:{"type":"dark"},scopedSlots:_u([{key:"brand",fn:function(){return [_c('a',{staticClass:"navbar-brand",attrs:{"href":"/index.html","title":"Home"}},[_c('img',{attrs:{"width":"30px","src":"/favicon.ico"}})])]},proxy:true},{key:"right",fn:function(){return [_c('li',[_c('form',{staticClass:"navbar-form"},[_c('searchbar',{attrs:{"data":searchData,"placeholder":"Search","on-hit":searchCallback,"menu-align-right":""}})],1)])]},proxy:true}])},[_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/index.html"}},[_v("HOME")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/showcase.html"}},[_v("SHOWCASE")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/ug/index.html"}},[_v("USER GUIDE")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/dg/index.html"}},[_v("DEVELOPER GUIDE")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/about.html"}},[_v("ABOUT")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/contact.html"}},[_v("CONTACT")])]),_v(" "),_c('li',{attrs:{"tags":"dev"}},[_c('a',{staticClass:"nav-link",attrs:{"href":"https://reposense.org","target":"_blank"}},[_c('span',[_c('span',{staticClass:"fas fa-external-link-alt",attrs:{"aria-hidden":"true"}}),_v(" PRODUCTION SITE")])])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"https://github.com/RepoSense/reposense","target":"_blank"}},[_c('span',[_c('span',{staticClass:"fab fa-github",attrs:{"aria-hidden":"true"}})])])])]),_v(" "),_m(0)],1),_v(" "),_c('div',{attrs:{"id":"flex-body"}},[_c('overlay-source',{staticClass:"fixed-header-padding",attrs:{"id":"site-nav","tag-name":"nav","to":"site-nav"}},[_c('div',{staticClass:"site-nav-top"},[_c('div',{staticClass:"font-weight-bold mb-2",staticStyle:{"font-size":"1.25rem"}},[_c('span',[_c('strong',[_c('strong',[_v("USER GUIDE")])])])])]),_v(" "),_c('div',{staticClass:"nav-component slim-scroll"},[_c('div',[_c('site-nav',[_c('overlay-source',{staticClass:"site-nav-list site-nav-list-root",attrs:{"tag-name":"ul","to":"mb-site-nav"}},[_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/index.html"}},[_c('strong',[_v("Overview")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/generatingReports.html"}},[_c('strong',[_v("Generating reports")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/usingReports.html"}},[_c('strong',[_v("Using reports")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/customizingReports.html"}},[_c('strong',[_v("Customizing reports")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/sharingReports.html"}},[_c('strong',[_v("Sharing reports")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('strong',[_v("Appendices")]),_v(" "),_c('div',{staticClass:"site-nav-dropdown-btn-container"},[_c('i',{staticClass:"site-nav-dropdown-btn-icon site-nav-rotate-icon",attrs:{"onclick":"handleSiteNavClick(this.parentNode.parentNode, false); event.stopPropagation();"}},[_c('span',{staticClass:"glyphicon glyphicon-menu-down",attrs:{"aria-hidden":"true"}})])])]),_c('ul',{staticClass:"site-nav-dropdown-container site-nav-dropdown-container-open site-nav-list"},[_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/cli.html"}},[_v("CLI syntax reference")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/configFiles.html"}},[_v("Config files format")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/authorConfigSyntax.html"}},[_v("Advanced syntax: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/usingAuthorTags.html"}},[_v("Using "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("@@author")]),_v(" tags")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/withNetlify.html"}},[_v("RepoSense with Netlify")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/withGithubActions.html"}},[_v("RepoSense with GitHub Actions")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/withTravis.html"}},[_v("RepoSense with Travis")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/runSh.html"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("run.sh")]),_v(" format")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/faq.html"}},[_v("FAQ")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/troubleshooting.html"}},[_v("Troubleshooting")])])])])])])],1)],1)])]),_v(" "),_m(1)],1),_v(" "),_m(2)])} +with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"fixed":""}},[_c('navbar',{attrs:{"type":"dark"},scopedSlots:_u([{key:"brand",fn:function(){return [_c('a',{staticClass:"navbar-brand",attrs:{"href":"/index.html","title":"Home"}},[_c('img',{attrs:{"width":"30px","src":"/favicon.ico"}})])]},proxy:true},{key:"right",fn:function(){return [_c('li',[_c('form',{staticClass:"navbar-form"},[_c('searchbar',{attrs:{"data":searchData,"placeholder":"Search","on-hit":searchCallback,"menu-align-right":""}})],1)])]},proxy:true}])},[_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/index.html"}},[_v("HOME")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/showcase.html"}},[_v("SHOWCASE")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/ug/index.html"}},[_v("USER GUIDE")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/dg/index.html"}},[_v("DEVELOPER GUIDE")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/about.html"}},[_v("ABOUT")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/contact.html"}},[_v("CONTACT")])]),_v(" "),_c('li',{attrs:{"tags":"dev"}},[_c('a',{staticClass:"nav-link",attrs:{"href":"https://reposense.org","target":"_blank"}},[_c('span',[_c('span',{staticClass:"fas fa-external-link-alt",attrs:{"aria-hidden":"true"}}),_v(" PRODUCTION SITE")])])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"https://github.com/RepoSense/reposense","target":"_blank"}},[_c('span',[_c('span',{staticClass:"fab fa-github",attrs:{"aria-hidden":"true"}})])])])]),_v(" "),_m(0)],1),_v(" "),_c('div',{attrs:{"id":"flex-body"}},[_c('overlay-source',{staticClass:"fixed-header-padding",attrs:{"id":"site-nav","tag-name":"nav","to":"site-nav"}},[_c('div',{staticClass:"site-nav-top"},[_c('div',{staticClass:"font-weight-bold mb-2",staticStyle:{"font-size":"1.25rem"}},[_c('span',[_c('strong',[_c('strong',[_v("USER GUIDE")])])])])]),_v(" "),_c('div',{staticClass:"nav-component slim-scroll"},[_c('div',[_c('site-nav',[_c('overlay-source',{staticClass:"site-nav-list site-nav-list-root",attrs:{"tag-name":"ul","to":"mb-site-nav"}},[_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/index.html"}},[_c('strong',[_v("Overview")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/generatingReports.html"}},[_c('strong',[_v("Generating reports")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/usingReports.html"}},[_c('strong',[_v("Using reports")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/customizingReports.html"}},[_c('strong',[_v("Customizing reports")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/sharingReports.html"}},[_c('strong',[_v("Sharing reports")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('strong',[_v("Appendices")]),_v(" "),_c('div',{staticClass:"site-nav-dropdown-btn-container"},[_c('i',{staticClass:"site-nav-dropdown-btn-icon site-nav-rotate-icon",attrs:{"onclick":"handleSiteNavClick(this.parentNode.parentNode, false); event.stopPropagation();"}},[_c('span',{staticClass:"glyphicon glyphicon-menu-down",attrs:{"aria-hidden":"true"}})])])]),_c('ul',{staticClass:"site-nav-dropdown-container site-nav-dropdown-container-open site-nav-list"},[_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/cli.html"}},[_v("CLI syntax reference")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/configFiles.html"}},[_v("Config files format")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/authorConfigSyntax.html"}},[_v("Advanced syntax: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/usingAuthorTags.html"}},[_v("Using "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("@@author")]),_v(" tags")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/withNetlify.html"}},[_v("RepoSense with Netlify")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/withGithubActions.html"}},[_v("RepoSense with GitHub Actions")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/withTravis.html"}},[_v("RepoSense with Travis")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/runSh.html"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("run.sh")]),_v(" format")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/faq.html"}},[_v("FAQ")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/troubleshooting.html"}},[_v("Troubleshooting")])])])])])])],1)],1)])]),_v(" "),_m(1),_v(" "),_c('overlay-source',{staticClass:"fixed-header-padding",attrs:{"id":"page-nav","tag-name":"nav","to":"page-nav"}},[_c('div',{staticClass:"nav-component slim-scroll"})])],1),_v(" "),_m(2)])} }; var pageVueStaticRenderFns = [function anonymous( ) { @@ -11,6 +11,6 @@ with(this){return _c('div',{staticClass:"text-center bg-warning p-2",attrs:{"tag with(this){return _c('div',{staticClass:"fixed-header-padding",attrs:{"id":"content-wrapper"}},[_c('p',[_c('a',{attrs:{"href":"https://github.com/reposense/RepoSense/tree/cypress"}},[_v("https://github.com/reposense/RepoSense/tree/cypress")]),_v("\nCypress branch of RepoSense")]),_v("\n------------------------------------\n"),_c('p',[_c('a',{attrs:{"href":"https://github.com/reposense/publish-RepoSense/tree/master"}},[_v("https://github.com/reposense/publish-RepoSense/tree/master")]),_v("\nPublishing branch of RepoSense")])])} },function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('small',[_v("["),_c('span',[_c('strong',[_v("Powered by")])]),_v(" "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"30"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.2")]),_v(", generated on Tue, 14 May 2024, 13:12:51 UTC]")])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('small',[_v("["),_c('span',[_c('strong',[_v("Powered by")])]),_v(" "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"30"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.2")]),_v(", generated on Thu, 16 May 2024, 22:31:25 UTC]")])])])} }]; \ No newline at end of file diff --git a/ug/cli.html b/ug/cli.html index b941afe345..19ed0deffc 100644 --- a/ug/cli.html +++ b/ug/cli.html @@ -11,7 +11,7 @@ - +

    You are looking at the user documentation for the most recent master branch of RepoSense (not released to the public yet). The documentation for the latest public release is here.

    Appendix: CLI syntax reference

    The command java -jar RepoSense.jar takes several flags.

    Examples:

    An example of a command using most parameters:
    java -jar RepoSense.jar --repos https://github.com/reposense/RepoSense.git --output ./report_folder --since 31/1/2017 --until 31/12/2018 --formats java adoc xml --view --ignore-standalone-config --last-modified-date --timezone UTC+08 --find-previous-authors --analyze-authorship --originality-threshold 0.66

    Same command as above but using most parameters in alias format:
    java -jar RepoSense.jar -r https://github.com/reposense/RepoSense.git -o ./report_folder -s 31/1/2017 -u 31/12/2018 -f java adoc xml -v -i -l -t UTC+08 -F -A -ot 0.66

    The section below provides explanations for each of the flags.

    --analyze-authorship, -A

    --analyze-authorship: Performs further analysis to distinguish between partial and full credit attribution for @@ -30,7 +30,7 @@ Default: one month before the current date

  • Alias: -s
  • Example:--since 21/10/2017 or -s 21/10/2017
    • If the start date is not specified, only commits made one month before the end date (if specified) or the date of generating the report, will be captured and analyzed.
    • If d1 is specified as the start date (--since d1 or -s d1), then the program will search for the earliest commit date of all repositories and use that as the start date.
    • If d1 is specified together with --period, then the program will warn that the date range being analyzed may be incorrect.

    --timezone, -t

    --timezone ZONE_ID: Indicates the timezone to be used for the analysis.

    • Parameter: ZONE_ID The timezone in the format ZONE_ID[±hh[mm]].
      Default: system's default timezone
    • Alias: -t
    • Example:--timezone UTC+08 or -t UTC-1030

    --until, -u

    --until END_DATE: Specifies the end date of the analysis period.

    • Parameter: END_DATE The last date of the period to be analyzed, in the format DD/MM/YYYY.
      Default: current date
    • Alias: -u
    • Example:--until 21/10/2017 or -u 21/10/2017

    Note: If the end date is not specified, the date of generating the report will be taken as the end date.

    --version, -V

    --version: Shows the version of RepoSense.

    • Alias: -V (upper case)

    Cannot be used with any other flags. This flag takes precedence over all other flags other than --help.

    --view, -v

    --view [REPORT_FOLDER]: Specifies that the report should be opened in the default browser.

    • Parameter: REPORT_FOLDER Optional. If specified, no analysis will be performed and the report specified by the argument will be opened.
      -Default: ./reposense-report
    • Alias: -v
    • Example:--view or -v
    [Powered by MarkBind 5.5.2, generated on Tue, 14 May 2024, 13:12:51 UTC]
    +Default: ./reposense-report
  • Alias: -v
  • Example:--view or -v
  • [Powered by MarkBind 5.5.2, generated on Thu, 16 May 2024, 22:31:25 UTC]
    diff --git a/ug/cli.page-vue-render.js b/ug/cli.page-vue-render.js index 427c156c3b..728d893960 100644 --- a/ug/cli.page-vue-render.js +++ b/ug/cli.page-vue-render.js @@ -1,7 +1,7 @@ var pageVueRenderFn = function anonymous( ) { -with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"fixed":""}},[_c('navbar',{attrs:{"type":"dark"},scopedSlots:_u([{key:"brand",fn:function(){return [_c('a',{staticClass:"navbar-brand",attrs:{"href":"/index.html","title":"Home"}},[_c('img',{attrs:{"width":"30px","src":"/favicon.ico"}})])]},proxy:true},{key:"right",fn:function(){return [_c('li',[_c('form',{staticClass:"navbar-form"},[_c('searchbar',{attrs:{"data":searchData,"placeholder":"Search","on-hit":searchCallback,"menu-align-right":""}})],1)])]},proxy:true}])},[_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/index.html"}},[_v("HOME")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/showcase.html"}},[_v("SHOWCASE")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/ug/index.html"}},[_v("USER GUIDE")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/dg/index.html"}},[_v("DEVELOPER GUIDE")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/about.html"}},[_v("ABOUT")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/contact.html"}},[_v("CONTACT")])]),_v(" "),_c('li',{attrs:{"tags":"dev"}},[_c('a',{staticClass:"nav-link",attrs:{"href":"https://reposense.org","target":"_blank"}},[_c('span',[_c('span',{staticClass:"fas fa-external-link-alt",attrs:{"aria-hidden":"true"}}),_v(" PRODUCTION SITE")])])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"https://github.com/RepoSense/reposense","target":"_blank"}},[_c('span',[_c('span',{staticClass:"fab fa-github",attrs:{"aria-hidden":"true"}})])])])]),_v(" "),_m(0)],1),_v(" "),_c('div',{attrs:{"id":"flex-body"}},[_c('overlay-source',{staticClass:"fixed-header-padding",attrs:{"id":"site-nav","tag-name":"nav","to":"site-nav"}},[_c('div',{staticClass:"site-nav-top"},[_c('div',{staticClass:"font-weight-bold mb-2",staticStyle:{"font-size":"1.25rem"}},[_c('span',[_c('strong',[_c('strong',[_v("USER GUIDE")])])])])]),_v(" "),_c('div',{staticClass:"nav-component slim-scroll"},[_c('div',[_c('site-nav',[_c('overlay-source',{staticClass:"site-nav-list site-nav-list-root",attrs:{"tag-name":"ul","to":"mb-site-nav"}},[_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/index.html"}},[_c('strong',[_v("Overview")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/generatingReports.html"}},[_c('strong',[_v("Generating reports")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/usingReports.html"}},[_c('strong',[_v("Using reports")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/customizingReports.html"}},[_c('strong',[_v("Customizing reports")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/sharingReports.html"}},[_c('strong',[_v("Sharing reports")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('strong',[_v("Appendices")]),_v(" "),_c('div',{staticClass:"site-nav-dropdown-btn-container"},[_c('i',{staticClass:"site-nav-dropdown-btn-icon site-nav-rotate-icon",attrs:{"onclick":"handleSiteNavClick(this.parentNode.parentNode, false); event.stopPropagation();"}},[_c('span',{staticClass:"glyphicon glyphicon-menu-down",attrs:{"aria-hidden":"true"}})])])]),_c('ul',{staticClass:"site-nav-dropdown-container site-nav-dropdown-container-open site-nav-list"},[_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/cli.html"}},[_v("CLI syntax reference")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/configFiles.html"}},[_v("Config files format")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/authorConfigSyntax.html"}},[_v("Advanced syntax: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/usingAuthorTags.html"}},[_v("Using "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("@@author")]),_v(" tags")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/withNetlify.html"}},[_v("RepoSense with Netlify")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/withGithubActions.html"}},[_v("RepoSense with GitHub Actions")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/withTravis.html"}},[_v("RepoSense with Travis")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/runSh.html"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("run.sh")]),_v(" format")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/faq.html"}},[_v("FAQ")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/troubleshooting.html"}},[_v("Troubleshooting")])])])])])])],1)],1)])]),_v(" "),_c('div',{staticClass:"fixed-header-padding",attrs:{"id":"content-wrapper"}},[_m(1),_v(" "),_m(2),_v(" "),_c('box',[_c('p',[_c('strong',[_v("Examples")]),_v(":")]),_v(" "),_c('p',[_v("An example of a command using most parameters:"),_c('br'),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar --repos https://github.com/reposense/RepoSense.git --output ./report_folder --since 31/1/2017 --until 31/12/2018 --formats java adoc xml --view --ignore-standalone-config --last-modified-date --timezone UTC+08 --find-previous-authors --analyze-authorship --originality-threshold 0.66")])]),_v(" "),_c('p',[_v("Same command as above but using most parameters in alias format:"),_c('br'),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar -r https://github.com/reposense/RepoSense.git -o ./report_folder -s 31/1/2017 -u 31/12/2018 -f java adoc xml -v -i -l -t UTC+08 -F -A -ot 0.66")])])]),_v(" "),_c('p',[_v("The section below provides explanations for each of the flags.")]),_v(" "),_m(3),_v(" "),_m(4),_v(" "),_m(5),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("A darker background colour represents full credit, while a lighter background colour represents partial credit.")]),_v(" "),_c('p',[_v("If the code is attributed to a different author by the user via "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("@@author")]),_v(" tag, then the new author will be given\npartial credit.")])]),_v(" "),_m(6),_v(" "),_c('div',{attrs:{"id":"section-assets"}},[_m(7),_v(" "),_m(8),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("If "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--assets")]),_v(" is not specified, RepoSense looks for assets in the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./assets")]),_v(" directory.")])])])],1),_v(" "),_m(9),_v(" "),_c('div',{attrs:{"id":"section-config"}},[_m(10),_v(" "),_m(11),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("Cannot be used with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repos")]),_v(". The "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repos")]),_v(" flag will take precedence over this flag.")]),_v(" "),_c('li',[_v("If both "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repos")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--config")]),_v(" are not specified, RepoSense looks for config files in the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./config")]),_v(" directory.")]),_v(" "),_c('li',[_v("Config files must follow "),_c('a',{attrs:{"href":"/RepoSense/ug/configFiles.html"}},[_v("this")]),_v(" format.")])])])],1),_v(" "),_m(12),_v(" "),_m(13),_v(" "),_m(14),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Binary file formats, such as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("jpg")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("png")]),_v(","),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("exe")]),_v(","),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("zip")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("rar")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("docx")]),_v(", and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("pptx")]),_v(", all will be labelled as the file type "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("binary")]),_v(" in the generated report.")])]),_v(" "),_m(15),_v(" "),_m(16),_v(" "),_m(17),_v(" "),_m(18),_v(" "),_m(19),_v(" "),_m(20),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Cannot be used with any other flags. This flag takes precedence over all other flags.")])]),_v(" "),_m(21),_v(" "),_m(22),_v(" "),_m(23),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("This flag overrides the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Ignore standalone config")]),_v(" field in the CSV config file.")])]),_v(" "),_m(24),_v(" "),_m(25),_v(" "),_m(26),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("All files are subject to a default file size limit or a custom size limit set by the user. Most files should not be\naffected by the default size limit. This flag can be useful for including files in your report that are affected by\nthe size limit. Note that this flag may result in large report sizes and/or slower report generation.")])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("This flag overrides the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Ignore file size limit")]),_v(" field in the CSV config file.")])]),_v(" "),_m(27),_v(" "),_m(28),_v(" "),_m(29),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("Cannot be used with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--shallow-cloning")]),_v(". This may result in an incorrect last modified date.")]),_v(" "),_c('li',[_v("The last modified dates will be in the same timezone specified with the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--timezone")]),_v(" flag.")])])]),_v(" "),_m(30),_v(" "),_m(31),_v(" "),_m(32),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("Requires "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--analyze-authorship")]),_v(" flag.")]),_v(" "),_c('li',[_v("An author's contribution, or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("originality score")]),_v(", is calculated using Levenshtein Distance (Edit Distance) algorithm.\nWe compare the difference between current code line and its previous versions.")])])]),_v(" "),_m(33),_v(" "),_m(34),_v(" "),_m(35),_v(" "),_m(36),_v(" "),_m(37),_v(" "),_m(38),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("If both start date and end date are not specified, the date of generating the report will be taken as the end date.")]),_v(" "),_c('li',[_v("May analyze the incorrect date range if used with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since d1")]),_v(". The program will throw a warning.")]),_v(" "),_c('li',[_v("Cannot be used with both "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--until")]),_v(". The program will throw an exception.")])])]),_v(" "),_m(39),_v(" "),_m(40),_v(" "),_m(41),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Cannot be used with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--config")]),_v(". This flag takes precedence over "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--config")]),_v(".")])]),_v(" "),_m(42),_v(" "),_m(43),_v(" "),_m(44),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Cannot be used with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--last-modified-date")]),_v(". This may result in an incorrect last modified date.")])]),_v(" "),_m(45),_v(" "),_m(46),_v(" "),_m(47),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("If the start date is not specified, only commits made one month before the end date (if specified) or the date of generating the report, will be captured and analyzed.")]),_v(" "),_c('li',[_v("If "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("d1")]),_v(" is specified as the start date ("),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since d1")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-s d1")]),_v("), then the program will search for the earliest commit date of all repositories and use that as the start date.")]),_v(" "),_c('li',[_v("If "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("d1")]),_v(" is specified together with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--period")]),_v(", then the program will warn that the date range being analyzed may be incorrect.")])])]),_v(" "),_m(48),_v(" "),_m(49),_v(" "),_m(50),_v(" "),_m(51),_v(" "),_m(52),_v(" "),_m(53),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Note: If the end date is not specified, the date of generating the report will be taken as the end date.")])]),_v(" "),_m(54),_v(" "),_m(55),_v(" "),_m(56),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Cannot be used with any other flags. This flag takes precedence over all other flags other than "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--help")]),_v(".")])]),_v(" "),_m(57),_v(" "),_m(58),_v(" "),_m(59)],1)],1),_v(" "),_m(60)])} +with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"fixed":""}},[_c('navbar',{attrs:{"type":"dark"},scopedSlots:_u([{key:"brand",fn:function(){return [_c('a',{staticClass:"navbar-brand",attrs:{"href":"/index.html","title":"Home"}},[_c('img',{attrs:{"width":"30px","src":"/favicon.ico"}})])]},proxy:true},{key:"right",fn:function(){return [_c('li',[_c('form',{staticClass:"navbar-form"},[_c('searchbar',{attrs:{"data":searchData,"placeholder":"Search","on-hit":searchCallback,"menu-align-right":""}})],1)])]},proxy:true}])},[_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/index.html"}},[_v("HOME")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/showcase.html"}},[_v("SHOWCASE")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/ug/index.html"}},[_v("USER GUIDE")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/dg/index.html"}},[_v("DEVELOPER GUIDE")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/about.html"}},[_v("ABOUT")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/contact.html"}},[_v("CONTACT")])]),_v(" "),_c('li',{attrs:{"tags":"dev"}},[_c('a',{staticClass:"nav-link",attrs:{"href":"https://reposense.org","target":"_blank"}},[_c('span',[_c('span',{staticClass:"fas fa-external-link-alt",attrs:{"aria-hidden":"true"}}),_v(" PRODUCTION SITE")])])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"https://github.com/RepoSense/reposense","target":"_blank"}},[_c('span',[_c('span',{staticClass:"fab fa-github",attrs:{"aria-hidden":"true"}})])])])]),_v(" "),_m(0)],1),_v(" "),_c('div',{attrs:{"id":"flex-body"}},[_c('overlay-source',{staticClass:"fixed-header-padding",attrs:{"id":"site-nav","tag-name":"nav","to":"site-nav"}},[_c('div',{staticClass:"site-nav-top"},[_c('div',{staticClass:"font-weight-bold mb-2",staticStyle:{"font-size":"1.25rem"}},[_c('span',[_c('strong',[_c('strong',[_v("USER GUIDE")])])])])]),_v(" "),_c('div',{staticClass:"nav-component slim-scroll"},[_c('div',[_c('site-nav',[_c('overlay-source',{staticClass:"site-nav-list site-nav-list-root",attrs:{"tag-name":"ul","to":"mb-site-nav"}},[_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/index.html"}},[_c('strong',[_v("Overview")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/generatingReports.html"}},[_c('strong',[_v("Generating reports")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/usingReports.html"}},[_c('strong',[_v("Using reports")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/customizingReports.html"}},[_c('strong',[_v("Customizing reports")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/sharingReports.html"}},[_c('strong',[_v("Sharing reports")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('strong',[_v("Appendices")]),_v(" "),_c('div',{staticClass:"site-nav-dropdown-btn-container"},[_c('i',{staticClass:"site-nav-dropdown-btn-icon site-nav-rotate-icon",attrs:{"onclick":"handleSiteNavClick(this.parentNode.parentNode, false); event.stopPropagation();"}},[_c('span',{staticClass:"glyphicon glyphicon-menu-down",attrs:{"aria-hidden":"true"}})])])]),_c('ul',{staticClass:"site-nav-dropdown-container site-nav-dropdown-container-open site-nav-list"},[_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/cli.html"}},[_v("CLI syntax reference")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/configFiles.html"}},[_v("Config files format")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/authorConfigSyntax.html"}},[_v("Advanced syntax: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/usingAuthorTags.html"}},[_v("Using "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("@@author")]),_v(" tags")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/withNetlify.html"}},[_v("RepoSense with Netlify")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/withGithubActions.html"}},[_v("RepoSense with GitHub Actions")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/withTravis.html"}},[_v("RepoSense with Travis")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/runSh.html"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("run.sh")]),_v(" format")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/faq.html"}},[_v("FAQ")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/troubleshooting.html"}},[_v("Troubleshooting")])])])])])])],1)],1)])]),_v(" "),_c('div',{staticClass:"fixed-header-padding",attrs:{"id":"content-wrapper"}},[_m(1),_v(" "),_m(2),_v(" "),_c('box',[_c('p',[_c('strong',[_v("Examples")]),_v(":")]),_v(" "),_c('p',[_v("An example of a command using most parameters:"),_c('br'),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar --repos https://github.com/reposense/RepoSense.git --output ./report_folder --since 31/1/2017 --until 31/12/2018 --formats java adoc xml --view --ignore-standalone-config --last-modified-date --timezone UTC+08 --find-previous-authors --analyze-authorship --originality-threshold 0.66")])]),_v(" "),_c('p',[_v("Same command as above but using most parameters in alias format:"),_c('br'),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar -r https://github.com/reposense/RepoSense.git -o ./report_folder -s 31/1/2017 -u 31/12/2018 -f java adoc xml -v -i -l -t UTC+08 -F -A -ot 0.66")])])]),_v(" "),_c('p',[_v("The section below provides explanations for each of the flags.")]),_v(" "),_m(3),_v(" "),_m(4),_v(" "),_m(5),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("A darker background colour represents full credit, while a lighter background colour represents partial credit.")]),_v(" "),_c('p',[_v("If the code is attributed to a different author by the user via "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("@@author")]),_v(" tag, then the new author will be given\npartial credit.")])]),_v(" "),_m(6),_v(" "),_c('div',{attrs:{"id":"section-assets"}},[_m(7),_v(" "),_m(8),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("If "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--assets")]),_v(" is not specified, RepoSense looks for assets in the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./assets")]),_v(" directory.")])])])],1),_v(" "),_m(9),_v(" "),_c('div',{attrs:{"id":"section-config"}},[_m(10),_v(" "),_m(11),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("Cannot be used with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repos")]),_v(". The "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repos")]),_v(" flag will take precedence over this flag.")]),_v(" "),_c('li',[_v("If both "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repos")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--config")]),_v(" are not specified, RepoSense looks for config files in the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./config")]),_v(" directory.")]),_v(" "),_c('li',[_v("Config files must follow "),_c('a',{attrs:{"href":"/RepoSense/ug/configFiles.html"}},[_v("this")]),_v(" format.")])])])],1),_v(" "),_m(12),_v(" "),_m(13),_v(" "),_m(14),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Binary file formats, such as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("jpg")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("png")]),_v(","),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("exe")]),_v(","),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("zip")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("rar")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("docx")]),_v(", and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("pptx")]),_v(", all will be labelled as the file type "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("binary")]),_v(" in the generated report.")])]),_v(" "),_m(15),_v(" "),_m(16),_v(" "),_m(17),_v(" "),_m(18),_v(" "),_m(19),_v(" "),_m(20),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Cannot be used with any other flags. This flag takes precedence over all other flags.")])]),_v(" "),_m(21),_v(" "),_m(22),_v(" "),_m(23),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("This flag overrides the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Ignore standalone config")]),_v(" field in the CSV config file.")])]),_v(" "),_m(24),_v(" "),_m(25),_v(" "),_m(26),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("All files are subject to a default file size limit or a custom size limit set by the user. Most files should not be\naffected by the default size limit. This flag can be useful for including files in your report that are affected by\nthe size limit. Note that this flag may result in large report sizes and/or slower report generation.")])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("This flag overrides the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Ignore file size limit")]),_v(" field in the CSV config file.")])]),_v(" "),_m(27),_v(" "),_m(28),_v(" "),_m(29),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("Cannot be used with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--shallow-cloning")]),_v(". This may result in an incorrect last modified date.")]),_v(" "),_c('li',[_v("The last modified dates will be in the same timezone specified with the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--timezone")]),_v(" flag.")])])]),_v(" "),_m(30),_v(" "),_m(31),_v(" "),_m(32),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("Requires "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--analyze-authorship")]),_v(" flag.")]),_v(" "),_c('li',[_v("An author's contribution, or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("originality score")]),_v(", is calculated using Levenshtein Distance (Edit Distance) algorithm.\nWe compare the difference between current code line and its previous versions.")])])]),_v(" "),_m(33),_v(" "),_m(34),_v(" "),_m(35),_v(" "),_m(36),_v(" "),_m(37),_v(" "),_m(38),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("If both start date and end date are not specified, the date of generating the report will be taken as the end date.")]),_v(" "),_c('li',[_v("May analyze the incorrect date range if used with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since d1")]),_v(". The program will throw a warning.")]),_v(" "),_c('li',[_v("Cannot be used with both "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--until")]),_v(". The program will throw an exception.")])])]),_v(" "),_m(39),_v(" "),_m(40),_v(" "),_m(41),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Cannot be used with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--config")]),_v(". This flag takes precedence over "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--config")]),_v(".")])]),_v(" "),_m(42),_v(" "),_m(43),_v(" "),_m(44),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Cannot be used with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--last-modified-date")]),_v(". This may result in an incorrect last modified date.")])]),_v(" "),_m(45),_v(" "),_m(46),_v(" "),_m(47),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("If the start date is not specified, only commits made one month before the end date (if specified) or the date of generating the report, will be captured and analyzed.")]),_v(" "),_c('li',[_v("If "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("d1")]),_v(" is specified as the start date ("),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since d1")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-s d1")]),_v("), then the program will search for the earliest commit date of all repositories and use that as the start date.")]),_v(" "),_c('li',[_v("If "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("d1")]),_v(" is specified together with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--period")]),_v(", then the program will warn that the date range being analyzed may be incorrect.")])])]),_v(" "),_m(48),_v(" "),_m(49),_v(" "),_m(50),_v(" "),_m(51),_v(" "),_m(52),_v(" "),_m(53),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Note: If the end date is not specified, the date of generating the report will be taken as the end date.")])]),_v(" "),_m(54),_v(" "),_m(55),_v(" "),_m(56),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Cannot be used with any other flags. This flag takes precedence over all other flags other than "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--help")]),_v(".")])]),_v(" "),_m(57),_v(" "),_m(58),_v(" "),_m(59)],1),_v(" "),_c('overlay-source',{staticClass:"fixed-header-padding",attrs:{"id":"page-nav","tag-name":"nav","to":"page-nav"}},[_c('div',{staticClass:"nav-component slim-scroll"},[_c('overlay-source',{staticClass:"nav nav-pills flex-column my-0 small no-flex-wrap",attrs:{"id":"mb-page-nav","tag-name":"nav","to":"mb-page-nav"}},[_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#appendix-cli-syntax-reference"}},[_v("Appendix: CLI syntax reference‎")]),_v(" "),_c('nav',{staticClass:"nav nav-pills flex-column my-0 nested no-flex-wrap"},[_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#analyze-authorship-a"}},[_v("--analyze-authorship, -A‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#assets-a"}},[_v("--assets, -a‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#config-c"}},[_v("--config, -c‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#formats-f"}},[_v("--formats, -f‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#find-previous-authors-f"}},[_v("--find-previous-authors, -F‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#help-h"}},[_v("--help, -h‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#ignore-standalone-config-i"}},[_v("--ignore-standalone-config, -i‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#ignore-filesize-limit-i"}},[_v("--ignore-filesize-limit, -I‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#last-modified-date-l"}},[_v("--last-modified-date, -l‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#originality-threshold-ot"}},[_v("--originality-threshold, -ot‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#output-o"}},[_v("--output, -o‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#period-p"}},[_v("--period, -p‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#repo-repos-r"}},[_v("--repo, --repos, -r‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#shallow-cloning-s"}},[_v("--shallow-cloning, -S‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#since-s"}},[_v("--since, -s‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#timezone-t"}},[_v("--timezone, -t‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#until-u"}},[_v("--until, -u‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#version-v"}},[_v("--version, -V‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#view-v"}},[_v("--view, -v‎")])])])],1)])],1),_v(" "),_m(60)])} }; var pageVueStaticRenderFns = [function anonymous( ) { @@ -185,6 +185,6 @@ with(this){return _c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs with(this){return _c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("REPORT_FOLDER")]),_v(" Optional. If specified, no analysis will be performed and the report specified by the argument will be opened."),_c('br'),_v("\nDefault: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./reposense-report")])]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-v")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--view")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-v")])])])} },function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('small',[_v("["),_c('span',[_c('strong',[_v("Powered by")])]),_v(" "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"30"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.2")]),_v(", generated on Tue, 14 May 2024, 13:12:51 UTC]")])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('small',[_v("["),_c('span',[_c('strong',[_v("Powered by")])]),_v(" "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"30"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.2")]),_v(", generated on Thu, 16 May 2024, 22:31:25 UTC]")])])])} }]; \ No newline at end of file diff --git a/ug/configFiles.html b/ug/configFiles.html index 10cc5afd6d..18cbf08167 100644 --- a/ug/configFiles.html +++ b/ug/configFiles.html @@ -11,7 +11,7 @@ - +

    You are looking at the user documentation for the most recent master branch of RepoSense (not released to the public yet). The documentation for the latest public release is here.

    Appendix: Config files format

    Given below are the details of the various config files used by RepoSense.

    RepoSense ignores the order of column headers in the CSV config files. However, the spelling of the column headers must match the specified headers exactly, or the column would be ignored by RepoSense.

    A value in a config file is optional to provide unless it is specified as mandatory.

    repo-config.csv

    repo-config.csv file contains repo-level config data. Each row represents a repository's configuration (example).

    Column Name Explanation
    Repository's Location mandatory The Remote Repo URL or Disk Path to the git repository e.g., https://github.com/foo/bar.git or C:\Users\user\Desktop\GitHub\foo\bar
    Branch The branch to analyze in the target repository e.g., master. Default: the default branch of the repo
    File formats*+ The file extensions to analyze. Binary file formats, such as png and jpg, will be automatically labelled as the file type binary in the generated report. Default: all file formats
    Find Previous Authors Enter yes to utilize Git blame's ignore revisions functionality, RepoSense will attempt to blame the line changes caused by commits in the ignore commit list to the previous authors who altered those lines (if available).
    Ignore Glob List*+ The list of file path globs to ignore during analysis for each author e.g., test/**;temp/**. Refer to the glob format for the path glob syntax.
    Ignore standalone config To ignore the standalone config file (if any) in target repository, enter yes. If the cell is empty, the standalone config file in the repo (if any) will take precedence over configurations provided in the csv files.
    Ignore Commits List*+ The list of commits to ignore during analysis. For accurate results, the commits should be provided with their full hash. Additionally, a range of commits can be specified using the .. notation e.g. abc123..def456 (both inclusive).
    Ignore Authors List*+ The list of authors to ignore during analysis. Authors should be specified by their Git Author Name.
    Shallow Cloning Enter yes to clone the repository using Git's shallow cloning functionality. This option can significantly reduce the time taken to clone large repositories. However, the option should ideally be disabled for smaller repositories where the .git file is smaller than 500 MB, as it would create overhead.
    File Size Limit+ Enter a file size limit for the repository in bytes as a single number without units (for a size limit of 1MB for example, enter 1000000). This file size limit will override the default file size limit (500KB). Files exceeding the file size limit will be marked as ignored and only the file name and line count will be reflected in the report.
    Ignore File Size Limit Enter yes to ignore both the default file size limit and the file size limit possibly set by the user in repo-config.csv.
    Skip Ignored File Analysis Enter yes to ignore analysis of files exceeding the file size limit entirely. If file analysis is skipped, all information about the file will be omitted from the generated report. This option can significantly improve report generation time.
    @@ -57,7 +57,7 @@ To find the author name that you are currently using for your current git repository, run the following command within your git repository:

    git config user.name
     

    To set the author name to the value you want (e.g., to set it to your GitHub username) for your current git repository, you can use the following command (more info):

    git config user.name "YOUR_AUTHOR_NAME”
     

    To set the author name to use a default value you want for future git repositories, you can use the following command:

    git config --global user.name "YOUR_AUTHOR_NAME”
    -

    RepoSense expects the Git Author Name to be the same as author's username on the Git hosting platform (GitHub, GitLab, BitBucket). If an author's Git Author Name is different from their username on the Git hosting platform, the Git Author Name needs to be specified in the standalone config file. If the author has more than one Git Author Name, multiple values can be entered too.

    Note: Symbols such as ", !, / etc. in your author name will be omitted, which may reduce the accuracy of the analysis if 2 names in the repository are approximately similar.

    blurbs.md

    You can optionally use blurbs.md to add blurbs in Markdown syntax for repository branches. These blurbs will be seen when grouping by Repo/Branch. (example)

    Format:

    • First line in section: Link to the repository branch.
    • Second line onwards: Blurb content.
    • Delimiter: <!--repo-->. Everything on the line after the delimiter will be ignored.
    [Powered by MarkBind 5.5.2, generated on Tue, 14 May 2024, 13:12:51 UTC]
    +

    RepoSense expects the Git Author Name to be the same as author's username on the Git hosting platform (GitHub, GitLab, BitBucket). If an author's Git Author Name is different from their username on the Git hosting platform, the Git Author Name needs to be specified in the standalone config file. If the author has more than one Git Author Name, multiple values can be entered too.

    Note: Symbols such as ", !, / etc. in your author name will be omitted, which may reduce the accuracy of the analysis if 2 names in the repository are approximately similar.

    blurbs.md

    You can optionally use blurbs.md to add blurbs in Markdown syntax for repository branches. These blurbs will be seen when grouping by Repo/Branch. (example)

    Format:

    • First line in section: Link to the repository branch.
    • Second line onwards: Blurb content.
    • Delimiter: <!--repo-->. Everything on the line after the delimiter will be ignored.
    [Powered by MarkBind 5.5.2, generated on Thu, 16 May 2024, 22:31:25 UTC]
    diff --git a/ug/configFiles.page-vue-render.js b/ug/configFiles.page-vue-render.js index e76eb5e8d3..71b342b47c 100644 --- a/ug/configFiles.page-vue-render.js +++ b/ug/configFiles.page-vue-render.js @@ -1,7 +1,7 @@ var pageVueRenderFn = function anonymous( ) { -with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"fixed":""}},[_c('navbar',{attrs:{"type":"dark"},scopedSlots:_u([{key:"brand",fn:function(){return [_c('a',{staticClass:"navbar-brand",attrs:{"href":"/index.html","title":"Home"}},[_c('img',{attrs:{"width":"30px","src":"/favicon.ico"}})])]},proxy:true},{key:"right",fn:function(){return [_c('li',[_c('form',{staticClass:"navbar-form"},[_c('searchbar',{attrs:{"data":searchData,"placeholder":"Search","on-hit":searchCallback,"menu-align-right":""}})],1)])]},proxy:true}])},[_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/index.html"}},[_v("HOME")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/showcase.html"}},[_v("SHOWCASE")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/ug/index.html"}},[_v("USER GUIDE")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/dg/index.html"}},[_v("DEVELOPER GUIDE")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/about.html"}},[_v("ABOUT")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/contact.html"}},[_v("CONTACT")])]),_v(" "),_c('li',{attrs:{"tags":"dev"}},[_c('a',{staticClass:"nav-link",attrs:{"href":"https://reposense.org","target":"_blank"}},[_c('span',[_c('span',{staticClass:"fas fa-external-link-alt",attrs:{"aria-hidden":"true"}}),_v(" PRODUCTION SITE")])])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"https://github.com/RepoSense/reposense","target":"_blank"}},[_c('span',[_c('span',{staticClass:"fab fa-github",attrs:{"aria-hidden":"true"}})])])])]),_v(" "),_m(0)],1),_v(" "),_c('div',{attrs:{"id":"flex-body"}},[_c('overlay-source',{staticClass:"fixed-header-padding",attrs:{"id":"site-nav","tag-name":"nav","to":"site-nav"}},[_c('div',{staticClass:"site-nav-top"},[_c('div',{staticClass:"font-weight-bold mb-2",staticStyle:{"font-size":"1.25rem"}},[_c('span',[_c('strong',[_c('strong',[_v("USER GUIDE")])])])])]),_v(" "),_c('div',{staticClass:"nav-component slim-scroll"},[_c('div',[_c('site-nav',[_c('overlay-source',{staticClass:"site-nav-list site-nav-list-root",attrs:{"tag-name":"ul","to":"mb-site-nav"}},[_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/index.html"}},[_c('strong',[_v("Overview")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/generatingReports.html"}},[_c('strong',[_v("Generating reports")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/usingReports.html"}},[_c('strong',[_v("Using reports")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/customizingReports.html"}},[_c('strong',[_v("Customizing reports")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/sharingReports.html"}},[_c('strong',[_v("Sharing reports")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('strong',[_v("Appendices")]),_v(" "),_c('div',{staticClass:"site-nav-dropdown-btn-container"},[_c('i',{staticClass:"site-nav-dropdown-btn-icon site-nav-rotate-icon",attrs:{"onclick":"handleSiteNavClick(this.parentNode.parentNode, false); event.stopPropagation();"}},[_c('span',{staticClass:"glyphicon glyphicon-menu-down",attrs:{"aria-hidden":"true"}})])])]),_c('ul',{staticClass:"site-nav-dropdown-container site-nav-dropdown-container-open site-nav-list"},[_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/cli.html"}},[_v("CLI syntax reference")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/configFiles.html"}},[_v("Config files format")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/authorConfigSyntax.html"}},[_v("Advanced syntax: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/usingAuthorTags.html"}},[_v("Using "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("@@author")]),_v(" tags")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/withNetlify.html"}},[_v("RepoSense with Netlify")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/withGithubActions.html"}},[_v("RepoSense with GitHub Actions")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/withTravis.html"}},[_v("RepoSense with Travis")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/runSh.html"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("run.sh")]),_v(" format")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/faq.html"}},[_v("FAQ")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/troubleshooting.html"}},[_v("Troubleshooting")])])])])])])],1)],1)])]),_v(" "),_c('div',{staticClass:"fixed-header-padding",attrs:{"id":"content-wrapper"}},[_m(1),_v(" "),_m(2),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_c('strong',[_v("RepoSense ignores the order of column headers in the CSV config files. However, the spelling of the column headers must match the specified headers exactly, or the column would be ignored by RepoSense.")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_c('strong',[_v("A value in a config file is optional to provide unless it is specified as "),_c('span',{staticClass:"badge bg-danger"},[_v("mandatory")])]),_v(".")])]),_v(" "),_m(3),_v(" "),_m(4),_v(" "),_m(5),_c('box',{attrs:{"type":"info","seamless":""}},[_v("\nThe Shallow Cloning option is incompatible with the \"--last-modified-date\" CLI flag.\n")]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_v("\nIf Ignore File Size Limit is yes, the File Size Limit and Skip Ignored File Analysis columns are ignored.\n")]),_v(" "),_m(6),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("When using "),_c('a',{attrs:{"href":"#config-json-standalone-config-file"}},[_v("standalone config")]),_v(" (if it is not ignored), it is possible to override specific values from the standalone config by prepending the entered value with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("override:")]),_v(".")])]),_v(" "),_m(7),_v(" "),_m(8),_v(" "),_m(9),_m(10),_v(" "),_m(11),_v(" "),_m(12),_v(" "),_c('div',{staticClass:"indented-level0"},[_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('span',[_c('span',{staticClass:"glyphicon glyphicon-log-in",attrs:{"aria-hidden":"true"}})]),_v(" Appendix: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(" advanced syntax")])]},proxy:true}])},[_v(" "),_c('div',[_c('h1',{staticClass:"display-4",attrs:{"id":"appendix-author-config-csv-advanced-syntax"}},[_c('span',[_v("Appendix: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(" advanced syntax")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#appendix-author-config-csv-advanced-syntax","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{staticClass:"lead"},[_c('p',[_v("Given below are the advanced syntax available for "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(".")])]),_v(" "),_c('h2',{attrs:{"id":"multiple-repository-s-location-per-author"}},[_v("Multiple "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repository's Location")]),_v(" per author"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#multiple-repository-s-location-per-author","onclick":"event.stopPropagation()"}})]),_v(" "),_c('h4',{attrs:{"id":"specifying-multiple-repository-s-location"}},[_v("Specifying multiple "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repository's Location")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#specifying-multiple-repository-s-location","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("To specify multiple "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repository's Location")]),_v(" in a single row, we can use a semicolon "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(";")]),_v(" as a separator.")]),_v(" "),_c('p',[_v("Below is an example:")]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Repository's Location")]),_v(" "),_c('th',[_v("Branch")]),_v(" "),_c('th',[_v("Author's Git Host ID")]),_v(" "),_c('th',[_v("... Hidden columns")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://github.com/reposense/RepoSense.git;https://github.com/MarkBind/markbind.git")])]),_v(" "),_c('td',[_v("master")]),_v(" "),_c('td',[_v("sikai00")]),_v(" "),_c('td',[_v("--")])])])])]),_c('p',[_v("We have now furnished author details for both repositories in a single row, instead of having two individual rows per "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repository's Location")]),_v(".")]),_v(" "),_c('br'),_v(" "),_c('h4',{attrs:{"id":"specifying-repository-s-location-with-one-or-more-specific-branches"}},[_v("Specifying "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repository's Location")]),_v(" with one or more specific branches"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#specifying-repository-s-location-with-one-or-more-specific-branches","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("To list out one or more branches for a particular "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repository's Location")]),_v(", we can use a pipe "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("|")]),_v(" separator to demarcate the different branches.")]),_v(" "),_c('p',[_v("Below is an example:")]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Repository's Location")]),_v(" "),_c('th',[_v("Branch")]),_v(" "),_c('th',[_v("Author's Git Host ID")]),_v(" "),_c('th',[_v("... Hidden columns")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://github.com/reposense/RepoSense.git~master|release|cypress")])]),_v(" "),_c('td',[_v("master")]),_v(" "),_c('td',[_v("sikai00")]),_v(" "),_c('td',[_v("--")])])])])]),_c('p',[_v("We have now provided author details for three different branches in a single repo, using a single row.")]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("The branch specified through the delimiter syntax will take precedence over the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Branch")]),_v(" column.")])]),_v(" "),_c('h2',{attrs:{"id":"using-github-branch-url-as-repository-s-location"}},[_v("Using GitHub branch URL as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repository's Location")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#using-github-branch-url-as-repository-s-location","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("We can also use GitHub branch URL as copied from the address bar directly, to be able to quickly use the URL to specify the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repository's Location")]),_v(" and a specific "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Branch")]),_v(" at the same time.")]),_v(" "),_c('p',[_v("Below is an example:")]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Repository's Location")]),_v(" "),_c('th',[_v("Branch")]),_v(" "),_c('th',[_v("Author's Git Host ID")]),_v(" "),_c('th',[_v("... Hidden columns")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://github.com/reposense/RepoSense/tree/release")])]),_v(" "),_c('td'),_v(" "),_c('td',[_v("sikai00")]),_v(" "),_c('td',[_v("--")])])])])]),_c('p',[_v("There is no need to specify the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Branch")]),_v(" column now, as we have specified it through the GitHub branch URL.")]),_v(" "),_c('box',{attrs:{"type":"warning","seamless":""}},[_c('p',[_v("GitLab and BitBucket branch URL are not supported at the moment.")])]),_v(" "),_c('h2',{attrs:{"id":"combining-the-advanced-syntax"}},[_v("Combining the advanced syntax"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#combining-the-advanced-syntax","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("It is possible to combine the above-mentioned advanced syntax. By doing so, we can go from:")]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Repository's Location")]),_v(" "),_c('th',[_v("Branch")]),_v(" "),_c('th',[_v("Author's Git Host ID")]),_v(" "),_c('th',[_v("... Hidden columns")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://github.com/MarkBind/markbind/tree/vue3-migration")])]),_v(" "),_c('td'),_v(" "),_c('td',[_v("sikai00")]),_v(" "),_c('td',[_v("--")])]),_v(" "),_c('tr',[_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://github.com/reposense/RepoSense.git")])]),_v(" "),_c('td',[_v("master")]),_v(" "),_c('td',[_v("sikai00")]),_v(" "),_c('td',[_v("--")])]),_v(" "),_c('tr',[_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://github.com/reposense/RepoSense.git")])]),_v(" "),_c('td',[_v("cypress")]),_v(" "),_c('td',[_v("sikai00")]),_v(" "),_c('td',[_v("--")])])])])]),_c('p',[_v("to:")]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Repository's Location")]),_v(" "),_c('th',[_v("Branch")]),_v(" "),_c('th',[_v("Author's Git Host ID")]),_v(" "),_c('th',[_v("... Hidden columns")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://github.com/MarkBind/markbind/tree/vue3-migration;https://github.com/reposense/RepoSense.git~master|cypress")])]),_v(" "),_c('td'),_v(" "),_c('td',[_v("sikai00")]),_v(" "),_c('td',[_v("--")])])])])]),_c('br')],1)])],1),_v(" "),_c('p'),_v(" "),_m(13),_v(" "),_m(14),_v(" "),_m(15),_m(16),_v(" "),_m(17),_v(" "),_m(18),_v(" "),_m(19),_v(" "),_m(20),_v(" "),_m(21),_v(" "),_c('div',{attrs:{"id":"section-standalone"}},[_m(22),_v(" "),_m(23),_v(" "),_m(24),_v(" "),_m(25),_v(" "),_m(26),_c('p',[_v("Note: all fields are optional unless specified otherwise.")]),_v(" "),_m(27),_v(" "),_m(28),_v(" "),_m(29),_v(" "),_m(30),_v(" "),_m(31),_v(" "),_m(32),_v(" "),_m(33),_v(" "),_m(34),_v(" "),_m(35),_m(36),_v(" "),_m(37),_m(38),_v(" "),_m(39),_c('p',[_v("To set the author name to use a default value you want for future git repositories, you can use the following command:")]),_v(" "),_m(40),_m(41),_v(" "),_c('box',{attrs:{"type":"warning","seamless":""}},[_c('p',[_v("Note: Symbols such as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("\"")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("!")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("/")]),_v(" etc. in your author name will be omitted, which may reduce the accuracy of the analysis if 2 names in the repository are approximately similar.")])])],1),_v(" "),_m(42)],1)],1),_v(" "),_m(43)])} +with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"fixed":""}},[_c('navbar',{attrs:{"type":"dark"},scopedSlots:_u([{key:"brand",fn:function(){return [_c('a',{staticClass:"navbar-brand",attrs:{"href":"/index.html","title":"Home"}},[_c('img',{attrs:{"width":"30px","src":"/favicon.ico"}})])]},proxy:true},{key:"right",fn:function(){return [_c('li',[_c('form',{staticClass:"navbar-form"},[_c('searchbar',{attrs:{"data":searchData,"placeholder":"Search","on-hit":searchCallback,"menu-align-right":""}})],1)])]},proxy:true}])},[_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/index.html"}},[_v("HOME")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/showcase.html"}},[_v("SHOWCASE")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/ug/index.html"}},[_v("USER GUIDE")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/dg/index.html"}},[_v("DEVELOPER GUIDE")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/about.html"}},[_v("ABOUT")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/contact.html"}},[_v("CONTACT")])]),_v(" "),_c('li',{attrs:{"tags":"dev"}},[_c('a',{staticClass:"nav-link",attrs:{"href":"https://reposense.org","target":"_blank"}},[_c('span',[_c('span',{staticClass:"fas fa-external-link-alt",attrs:{"aria-hidden":"true"}}),_v(" PRODUCTION SITE")])])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"https://github.com/RepoSense/reposense","target":"_blank"}},[_c('span',[_c('span',{staticClass:"fab fa-github",attrs:{"aria-hidden":"true"}})])])])]),_v(" "),_m(0)],1),_v(" "),_c('div',{attrs:{"id":"flex-body"}},[_c('overlay-source',{staticClass:"fixed-header-padding",attrs:{"id":"site-nav","tag-name":"nav","to":"site-nav"}},[_c('div',{staticClass:"site-nav-top"},[_c('div',{staticClass:"font-weight-bold mb-2",staticStyle:{"font-size":"1.25rem"}},[_c('span',[_c('strong',[_c('strong',[_v("USER GUIDE")])])])])]),_v(" "),_c('div',{staticClass:"nav-component slim-scroll"},[_c('div',[_c('site-nav',[_c('overlay-source',{staticClass:"site-nav-list site-nav-list-root",attrs:{"tag-name":"ul","to":"mb-site-nav"}},[_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/index.html"}},[_c('strong',[_v("Overview")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/generatingReports.html"}},[_c('strong',[_v("Generating reports")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/usingReports.html"}},[_c('strong',[_v("Using reports")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/customizingReports.html"}},[_c('strong',[_v("Customizing reports")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/sharingReports.html"}},[_c('strong',[_v("Sharing reports")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('strong',[_v("Appendices")]),_v(" "),_c('div',{staticClass:"site-nav-dropdown-btn-container"},[_c('i',{staticClass:"site-nav-dropdown-btn-icon site-nav-rotate-icon",attrs:{"onclick":"handleSiteNavClick(this.parentNode.parentNode, false); event.stopPropagation();"}},[_c('span',{staticClass:"glyphicon glyphicon-menu-down",attrs:{"aria-hidden":"true"}})])])]),_c('ul',{staticClass:"site-nav-dropdown-container site-nav-dropdown-container-open site-nav-list"},[_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/cli.html"}},[_v("CLI syntax reference")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/configFiles.html"}},[_v("Config files format")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/authorConfigSyntax.html"}},[_v("Advanced syntax: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/usingAuthorTags.html"}},[_v("Using "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("@@author")]),_v(" tags")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/withNetlify.html"}},[_v("RepoSense with Netlify")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/withGithubActions.html"}},[_v("RepoSense with GitHub Actions")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/withTravis.html"}},[_v("RepoSense with Travis")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/runSh.html"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("run.sh")]),_v(" format")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/faq.html"}},[_v("FAQ")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/troubleshooting.html"}},[_v("Troubleshooting")])])])])])])],1)],1)])]),_v(" "),_c('div',{staticClass:"fixed-header-padding",attrs:{"id":"content-wrapper"}},[_m(1),_v(" "),_m(2),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_c('strong',[_v("RepoSense ignores the order of column headers in the CSV config files. However, the spelling of the column headers must match the specified headers exactly, or the column would be ignored by RepoSense.")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_c('strong',[_v("A value in a config file is optional to provide unless it is specified as "),_c('span',{staticClass:"badge bg-danger"},[_v("mandatory")])]),_v(".")])]),_v(" "),_m(3),_v(" "),_m(4),_v(" "),_m(5),_c('box',{attrs:{"type":"info","seamless":""}},[_v("\nThe Shallow Cloning option is incompatible with the \"--last-modified-date\" CLI flag.\n")]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_v("\nIf Ignore File Size Limit is yes, the File Size Limit and Skip Ignored File Analysis columns are ignored.\n")]),_v(" "),_m(6),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("When using "),_c('a',{attrs:{"href":"#config-json-standalone-config-file"}},[_v("standalone config")]),_v(" (if it is not ignored), it is possible to override specific values from the standalone config by prepending the entered value with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("override:")]),_v(".")])]),_v(" "),_m(7),_v(" "),_m(8),_v(" "),_m(9),_m(10),_v(" "),_m(11),_v(" "),_m(12),_v(" "),_c('div',{staticClass:"indented-level0"},[_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('span',[_c('span',{staticClass:"glyphicon glyphicon-log-in",attrs:{"aria-hidden":"true"}})]),_v(" Appendix: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(" advanced syntax")])]},proxy:true}])},[_v(" "),_c('div',[_c('h1',{staticClass:"display-4",attrs:{"id":"appendix-author-config-csv-advanced-syntax"}},[_c('span',[_v("Appendix: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(" advanced syntax")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#appendix-author-config-csv-advanced-syntax","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{staticClass:"lead"},[_c('p',[_v("Given below are the advanced syntax available for "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(".")])]),_v(" "),_c('h2',{attrs:{"id":"multiple-repository-s-location-per-author"}},[_v("Multiple "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repository's Location")]),_v(" per author"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#multiple-repository-s-location-per-author","onclick":"event.stopPropagation()"}})]),_v(" "),_c('h4',{attrs:{"id":"specifying-multiple-repository-s-location"}},[_v("Specifying multiple "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repository's Location")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#specifying-multiple-repository-s-location","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("To specify multiple "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repository's Location")]),_v(" in a single row, we can use a semicolon "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(";")]),_v(" as a separator.")]),_v(" "),_c('p',[_v("Below is an example:")]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Repository's Location")]),_v(" "),_c('th',[_v("Branch")]),_v(" "),_c('th',[_v("Author's Git Host ID")]),_v(" "),_c('th',[_v("... Hidden columns")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://github.com/reposense/RepoSense.git;https://github.com/MarkBind/markbind.git")])]),_v(" "),_c('td',[_v("master")]),_v(" "),_c('td',[_v("sikai00")]),_v(" "),_c('td',[_v("--")])])])])]),_c('p',[_v("We have now furnished author details for both repositories in a single row, instead of having two individual rows per "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repository's Location")]),_v(".")]),_v(" "),_c('br'),_v(" "),_c('h4',{attrs:{"id":"specifying-repository-s-location-with-one-or-more-specific-branches"}},[_v("Specifying "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repository's Location")]),_v(" with one or more specific branches"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#specifying-repository-s-location-with-one-or-more-specific-branches","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("To list out one or more branches for a particular "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repository's Location")]),_v(", we can use a pipe "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("|")]),_v(" separator to demarcate the different branches.")]),_v(" "),_c('p',[_v("Below is an example:")]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Repository's Location")]),_v(" "),_c('th',[_v("Branch")]),_v(" "),_c('th',[_v("Author's Git Host ID")]),_v(" "),_c('th',[_v("... Hidden columns")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://github.com/reposense/RepoSense.git~master|release|cypress")])]),_v(" "),_c('td',[_v("master")]),_v(" "),_c('td',[_v("sikai00")]),_v(" "),_c('td',[_v("--")])])])])]),_c('p',[_v("We have now provided author details for three different branches in a single repo, using a single row.")]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("The branch specified through the delimiter syntax will take precedence over the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Branch")]),_v(" column.")])]),_v(" "),_c('h2',{attrs:{"id":"using-github-branch-url-as-repository-s-location"}},[_v("Using GitHub branch URL as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repository's Location")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#using-github-branch-url-as-repository-s-location","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("We can also use GitHub branch URL as copied from the address bar directly, to be able to quickly use the URL to specify the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repository's Location")]),_v(" and a specific "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Branch")]),_v(" at the same time.")]),_v(" "),_c('p',[_v("Below is an example:")]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Repository's Location")]),_v(" "),_c('th',[_v("Branch")]),_v(" "),_c('th',[_v("Author's Git Host ID")]),_v(" "),_c('th',[_v("... Hidden columns")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://github.com/reposense/RepoSense/tree/release")])]),_v(" "),_c('td'),_v(" "),_c('td',[_v("sikai00")]),_v(" "),_c('td',[_v("--")])])])])]),_c('p',[_v("There is no need to specify the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Branch")]),_v(" column now, as we have specified it through the GitHub branch URL.")]),_v(" "),_c('box',{attrs:{"type":"warning","seamless":""}},[_c('p',[_v("GitLab and BitBucket branch URL are not supported at the moment.")])]),_v(" "),_c('h2',{attrs:{"id":"combining-the-advanced-syntax"}},[_v("Combining the advanced syntax"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#combining-the-advanced-syntax","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("It is possible to combine the above-mentioned advanced syntax. By doing so, we can go from:")]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Repository's Location")]),_v(" "),_c('th',[_v("Branch")]),_v(" "),_c('th',[_v("Author's Git Host ID")]),_v(" "),_c('th',[_v("... Hidden columns")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://github.com/MarkBind/markbind/tree/vue3-migration")])]),_v(" "),_c('td'),_v(" "),_c('td',[_v("sikai00")]),_v(" "),_c('td',[_v("--")])]),_v(" "),_c('tr',[_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://github.com/reposense/RepoSense.git")])]),_v(" "),_c('td',[_v("master")]),_v(" "),_c('td',[_v("sikai00")]),_v(" "),_c('td',[_v("--")])]),_v(" "),_c('tr',[_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://github.com/reposense/RepoSense.git")])]),_v(" "),_c('td',[_v("cypress")]),_v(" "),_c('td',[_v("sikai00")]),_v(" "),_c('td',[_v("--")])])])])]),_c('p',[_v("to:")]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Repository's Location")]),_v(" "),_c('th',[_v("Branch")]),_v(" "),_c('th',[_v("Author's Git Host ID")]),_v(" "),_c('th',[_v("... Hidden columns")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://github.com/MarkBind/markbind/tree/vue3-migration;https://github.com/reposense/RepoSense.git~master|cypress")])]),_v(" "),_c('td'),_v(" "),_c('td',[_v("sikai00")]),_v(" "),_c('td',[_v("--")])])])])]),_c('br')],1)])],1),_v(" "),_c('p'),_v(" "),_m(13),_v(" "),_m(14),_v(" "),_m(15),_m(16),_v(" "),_m(17),_v(" "),_m(18),_v(" "),_m(19),_v(" "),_m(20),_v(" "),_m(21),_v(" "),_c('div',{attrs:{"id":"section-standalone"}},[_m(22),_v(" "),_m(23),_v(" "),_m(24),_v(" "),_m(25),_v(" "),_m(26),_c('p',[_v("Note: all fields are optional unless specified otherwise.")]),_v(" "),_m(27),_v(" "),_m(28),_v(" "),_m(29),_v(" "),_m(30),_v(" "),_m(31),_v(" "),_m(32),_v(" "),_m(33),_v(" "),_m(34),_v(" "),_m(35),_m(36),_v(" "),_m(37),_m(38),_v(" "),_m(39),_c('p',[_v("To set the author name to use a default value you want for future git repositories, you can use the following command:")]),_v(" "),_m(40),_m(41),_v(" "),_c('box',{attrs:{"type":"warning","seamless":""}},[_c('p',[_v("Note: Symbols such as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("\"")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("!")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("/")]),_v(" etc. in your author name will be omitted, which may reduce the accuracy of the analysis if 2 names in the repository are approximately similar.")])])],1),_v(" "),_m(42)],1),_v(" "),_c('overlay-source',{staticClass:"fixed-header-padding",attrs:{"id":"page-nav","tag-name":"nav","to":"page-nav"}},[_c('div',{staticClass:"nav-component slim-scroll"},[_c('overlay-source',{staticClass:"nav nav-pills flex-column my-0 small no-flex-wrap",attrs:{"id":"mb-page-nav","tag-name":"nav","to":"mb-page-nav"}},[_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#appendix-config-files-format"}},[_v("Appendix: Config files format‎")]),_v(" "),_c('nav',{staticClass:"nav nav-pills flex-column my-0 nested no-flex-wrap"},[_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#repo-config-csv"}},[_v("repo-config.csv‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#author-config-csv"}},[_v("author-config.csv‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#group-config-csv"}},[_v("group-config.csv‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#report-config-json"}},[_v("report-config.json‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#config-json-standalone-config-file"}},[_v("config.json (standalone config file)‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#a-note-about-git-author-name"}},[_v("A note about git author name‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#blurbs-md"}},[_v("blurbs.md‎")])])])],1)])],1),_v(" "),_m(43)])} }; var pageVueStaticRenderFns = [function anonymous( ) { @@ -134,6 +134,6 @@ with(this){return _c('p',[_v("RepoSense expects the Git Author Name to be the sa with(this){return _c('div',{attrs:{"id":"section-blurbs"}},[_c('h2',{attrs:{"id":"blurbs-md"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("blurbs.md")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#blurbs-md","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("You can optionally use "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("blurbs.md")]),_v(" to add blurbs in Markdown syntax for repository branches. These blurbs will be seen when grouping by "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repo/Branch")]),_v(". ("),_c('a',{attrs:{"href":"https://github.com/reposense/RepoSense/blob/master/docs/ug/blurbs.md"}},[_v("example")]),_v(")")]),_v(" "),_c('p',[_c('strong',[_v("Format")]),_v(":")]),_v(" "),_c('ul',[_c('li',[_v("First line in section: Link to the repository branch.")]),_v(" "),_c('li',[_v("Second line onwards: Blurb content.")]),_v(" "),_c('li',[_v("Delimiter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("")]),_v(". Everything on the line after the delimiter will be ignored.")])])])} },function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('small',[_v("["),_c('span',[_c('strong',[_v("Powered by")])]),_v(" "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"30"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.2")]),_v(", generated on Tue, 14 May 2024, 13:12:51 UTC]")])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('small',[_v("["),_c('span',[_c('strong',[_v("Powered by")])]),_v(" "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"30"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.2")]),_v(", generated on Thu, 16 May 2024, 22:31:25 UTC]")])])])} }]; \ No newline at end of file diff --git a/ug/customizingReports.html b/ug/customizingReports.html index 4f46655ce1..cbd15a7fd6 100644 --- a/ug/customizingReports.html +++ b/ug/customizingReports.html @@ -11,11 +11,11 @@ - +

    You are looking at the user documentation for the most recent master branch of RepoSense (not released to the public yet). The documentation for the latest public release is here.

    Customizing reports

    The report can be customized using several ways, as explained below.

    Customize using CLI flags

    The simplest approach is to provide additional flags when running RepoSense. The various flags are given in the panel below.

    Customize using CSV config files

    Another, more powerful, way to customize the report is by using dedicated config files. In this case you need to use the --config flag instead of the --repo flag when running RepoSense, as follows:

    Managing config files collaboratively: If you use RepoSense to monitor a large number of programmers, it may be more practical to get the programmers to submit PRs to update the config files as necessary ().

    To ensure that their PRs are correct, you can use Netlify deploy previews to preview how the report would look like after the PR has been merged. More details are in the panels below.

    Get target repos to provide more info

    If feasible, you can also customize the target repos to play well with RepoSense in the following two ways:

    1. Add a standalone config file to the repo to provide more config details to RepoSense. The format of the file is given below.

    2. To have more precise control over which code segment is attributed to which author, authors can annotate their code using @@author tags, as explained below.

    In both instances, it is necessary to commit any changes for them to be detected by RepoSense.

    3. Add a git .mailmap file at the top-level of the repository, specifying mapped authors/commiters and/or e-mail addresses as per gitmailmap documentation. Any mappings specified here will be applied by git before all other RepoSense configurations. Configuration via .mailmap is particularly useful if you want the mapping to apply for all git commands as well instead of just for RepoSense.

    Personalizing Reports

    Add a title

    A title component can be added by creating a file titled title.md in the assets directory. You can specify the assets directory according to the reference below:

    The title can render a combination of Markdown/HTML and plaintext (example), and will appear on the top of the left panel as shown below: -Title Component Example

    Do note that the width of the title is bound by the width of the left panel.

    For more information on how to use Markdown, see the Markdown Guide.

    Add blurbs for branches

    A blurb can be added for a repository branch by creating a file titled blurbs.md in the config directory. The blurbs will be visible when grouping by Repo/Branch. The format of the file is given below:

    Specifying the config directory can be done as follows:

    [Powered by MarkBind 5.5.2, generated on Tue, 14 May 2024, 13:12:51 UTC]
    +Title Component Example

    Do note that the width of the title is bound by the width of the left panel.

    For more information on how to use Markdown, see the Markdown Guide.

    Add blurbs for branches

    A blurb can be added for a repository branch by creating a file titled blurbs.md in the config directory. The blurbs will be visible when grouping by Repo/Branch. The format of the file is given below:

    Specifying the config directory can be done as follows:

    [Powered by MarkBind 5.5.2, generated on Thu, 16 May 2024, 22:31:25 UTC]
    diff --git a/ug/customizingReports.page-vue-render.js b/ug/customizingReports.page-vue-render.js index 17672d6f16..b782cfb1d8 100644 --- a/ug/customizingReports.page-vue-render.js +++ b/ug/customizingReports.page-vue-render.js @@ -1,7 +1,7 @@ var pageVueRenderFn = function anonymous( ) { -with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"fixed":""}},[_c('navbar',{attrs:{"type":"dark"},scopedSlots:_u([{key:"brand",fn:function(){return [_c('a',{staticClass:"navbar-brand",attrs:{"href":"/index.html","title":"Home"}},[_c('img',{attrs:{"width":"30px","src":"/favicon.ico"}})])]},proxy:true},{key:"right",fn:function(){return [_c('li',[_c('form',{staticClass:"navbar-form"},[_c('searchbar',{attrs:{"data":searchData,"placeholder":"Search","on-hit":searchCallback,"menu-align-right":""}})],1)])]},proxy:true}])},[_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/index.html"}},[_v("HOME")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/showcase.html"}},[_v("SHOWCASE")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/ug/index.html"}},[_v("USER GUIDE")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/dg/index.html"}},[_v("DEVELOPER GUIDE")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/about.html"}},[_v("ABOUT")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/contact.html"}},[_v("CONTACT")])]),_v(" "),_c('li',{attrs:{"tags":"dev"}},[_c('a',{staticClass:"nav-link",attrs:{"href":"https://reposense.org","target":"_blank"}},[_c('span',[_c('span',{staticClass:"fas fa-external-link-alt",attrs:{"aria-hidden":"true"}}),_v(" PRODUCTION SITE")])])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"https://github.com/RepoSense/reposense","target":"_blank"}},[_c('span',[_c('span',{staticClass:"fab fa-github",attrs:{"aria-hidden":"true"}})])])])]),_v(" "),_m(0)],1),_v(" "),_c('div',{attrs:{"id":"flex-body"}},[_c('overlay-source',{staticClass:"fixed-header-padding",attrs:{"id":"site-nav","tag-name":"nav","to":"site-nav"}},[_c('div',{staticClass:"site-nav-top"},[_c('div',{staticClass:"font-weight-bold mb-2",staticStyle:{"font-size":"1.25rem"}},[_c('span',[_c('strong',[_c('strong',[_v("USER GUIDE")])])])])]),_v(" "),_c('div',{staticClass:"nav-component slim-scroll"},[_c('div',[_c('site-nav',[_c('overlay-source',{staticClass:"site-nav-list site-nav-list-root",attrs:{"tag-name":"ul","to":"mb-site-nav"}},[_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/index.html"}},[_c('strong',[_v("Overview")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/generatingReports.html"}},[_c('strong',[_v("Generating reports")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/usingReports.html"}},[_c('strong',[_v("Using reports")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/customizingReports.html"}},[_c('strong',[_v("Customizing reports")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/sharingReports.html"}},[_c('strong',[_v("Sharing reports")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('strong',[_v("Appendices")]),_v(" "),_c('div',{staticClass:"site-nav-dropdown-btn-container"},[_c('i',{staticClass:"site-nav-dropdown-btn-icon site-nav-rotate-icon",attrs:{"onclick":"handleSiteNavClick(this.parentNode.parentNode, false); event.stopPropagation();"}},[_c('span',{staticClass:"glyphicon glyphicon-menu-down",attrs:{"aria-hidden":"true"}})])])]),_c('ul',{staticClass:"site-nav-dropdown-container site-nav-dropdown-container-open site-nav-list"},[_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/cli.html"}},[_v("CLI syntax reference")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/configFiles.html"}},[_v("Config files format")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/authorConfigSyntax.html"}},[_v("Advanced syntax: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/usingAuthorTags.html"}},[_v("Using "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("@@author")]),_v(" tags")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/withNetlify.html"}},[_v("RepoSense with Netlify")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/withGithubActions.html"}},[_v("RepoSense with GitHub Actions")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/withTravis.html"}},[_v("RepoSense with Travis")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/runSh.html"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("run.sh")]),_v(" format")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/faq.html"}},[_v("FAQ")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/troubleshooting.html"}},[_v("Troubleshooting")])])])])])])],1)],1)])]),_v(" "),_c('div',{staticClass:"fixed-header-padding",attrs:{"id":"content-wrapper"}},[_m(1),_v(" "),_m(2),_v(" "),_m(3),_v(" "),_m(4),_v(" "),_c('div',{staticClass:"indented-level0"},[_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('span',[_c('span',{staticClass:"glyphicon glyphicon-log-in",attrs:{"aria-hidden":"true"}})]),_v(" Appendix: "),_c('strong',[_v("CLI syntax reference")])])]},proxy:true}])},[_v(" "),_c('div',[_c('h1',{staticClass:"display-4",attrs:{"id":"appendix-cli-syntax-reference"}},[_c('span',[_v("Appendix: CLI syntax reference")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#appendix-cli-syntax-reference","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{staticClass:"lead"},[_c('p',[_v("The command "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar")]),_v(" takes several flags.")])]),_v(" "),_c('box',[_c('p',[_c('strong',[_v("Examples")]),_v(":")]),_v(" "),_c('p',[_v("An example of a command using most parameters:"),_c('br'),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar --repos https://github.com/reposense/RepoSense.git --output ./report_folder --since 31/1/2017 --until 31/12/2018 --formats java adoc xml --view --ignore-standalone-config --last-modified-date --timezone UTC+08 --find-previous-authors --analyze-authorship --originality-threshold 0.66")])]),_v(" "),_c('p',[_v("Same command as above but using most parameters in alias format:"),_c('br'),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar -r https://github.com/reposense/RepoSense.git -o ./report_folder -s 31/1/2017 -u 31/12/2018 -f java adoc xml -v -i -l -t UTC+08 -F -A -ot 0.66")])])]),_v(" "),_c('p',[_v("The section below provides explanations for each of the flags.")]),_v(" "),_c('h3',{attrs:{"id":"analyze-authorship-a"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--analyze-authorship")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-A")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#analyze-authorship-a","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--analyze-authorship")])]),_v(": Performs further analysis to distinguish between partial and full credit attribution for\nlines of code assigned to the author.")]),_v(" "),_c('ul',[_c('li',[_v("Default: this feature is turned "),_c('em',[_c('strong',[_v("off")])]),_v(" by default and the author will receive partial credits for all lines of\ncode, as the code lines are at least partial credit but may not qualify for full credit.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-A")]),_v(" (upper case)")]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--analyze-authorship")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-A")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("A darker background colour represents full credit, while a lighter background colour represents partial credit.")]),_v(" "),_c('p',[_v("If the code is attributed to a different author by the user via "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("@@author")]),_v(" tag, then the new author will be given\npartial credit.")])]),_v(" "),_c('h3',{attrs:{"id":"assets-a"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--assets")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-a")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#assets-a","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{attrs:{"id":"section-assets"}},[_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--assets ASSETS_DIRECTORY")])]),_v(": Specifies where to place assets for report generation.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ASSETS_DIRECTORY")]),_v(" The directory containing the assets files. A "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("favicon.ico")]),_v(" file can be placed here to customize the favicon of the dashboard, while a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("title.md")]),_v(" file can be placed to customize the "),_c('a',{attrs:{"href":"https://reposense.org/ug/customizingReports.html#add-a-title"}},[_v("title")]),_v(" of the report using "),_c('a',{attrs:{"href":"https://www.markdownguide.org/basic-syntax/"}},[_v("Markdown syntax")]),_v(".")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-a")])]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--assets ./assets")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-a ./assets")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("If "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--assets")]),_v(" is not specified, RepoSense looks for assets in the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./assets")]),_v(" directory.")])])])],1),_v(" "),_c('h3',{attrs:{"id":"config-c"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--config")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-c")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#config-c","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{attrs:{"id":"section-config"}},[_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--config CONFIG_DIRECTORY")])]),_v(": Specifies that config files located in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("CONFIG_DIRECTORY")]),_v(" should be used to customize the report.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("CONFIG_DIRECTORY")]),_v(" The directory containing the config files. Should contain a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(" file. Optionally, can contain an "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(" file or/and a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("group-config.csv")]),_v(" file or/and a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("report-config.json")]),_v(" file or/and a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("blurbs.md")]),_v(" file.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-c")])]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar --config ./config")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("Cannot be used with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repos")]),_v(". The "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repos")]),_v(" flag will take precedence over this flag.")]),_v(" "),_c('li',[_v("If both "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repos")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--config")]),_v(" are not specified, RepoSense looks for config files in the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./config")]),_v(" directory.")]),_v(" "),_c('li',[_v("Config files must follow "),_c('a',{attrs:{"href":"/RepoSense/ug/configFiles.html"}},[_v("this")]),_v(" format.")])])])],1),_v(" "),_c('h3',{attrs:{"id":"formats-f"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--formats")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-f")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#formats-f","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--formats LIST_OF_FORMATS")])]),_v(": Specifies which file extensions to be included in the analysis.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("LIST_OF_FORMATS")]),_v(" A space-separated list of file extensions that should be included in the analysis."),_c('br'),_v("\nDefault: all file formats")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-f")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--formats css fxml gradle")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-f css fxml gradle")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Binary file formats, such as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("jpg")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("png")]),_v(","),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("exe")]),_v(","),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("zip")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("rar")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("docx")]),_v(", and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("pptx")]),_v(", all will be labelled as the file type "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("binary")]),_v(" in the generated report.")])]),_v(" "),_c('h3',{attrs:{"id":"find-previous-authors-f"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--find-previous-authors")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-F")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#find-previous-authors-f","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--find-previous-authors")])]),_v(": Utilizes Git blame's ignore revisions functionality, RepoSense will attempt to blame the line changes caused by commits in the ignore commit list to the previous authors who altered those lines (if available).")]),_v(" "),_c('ul',[_c('li',[_v("Default: RepoSense will assume that no authors are responsible for the code changes in the lines altered by commits in the ignore commit list.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-F")]),_v(" (uppercase F)")]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--find-previous-authors")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-F")])])]),_v(" "),_c('h3',{attrs:{"id":"help-h"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--help")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-h")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#help-h","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--help")])]),_v(": Shows the help message.")]),_v(" "),_c('ul',[_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-h")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Cannot be used with any other flags. This flag takes precedence over all other flags.")])]),_v(" "),_c('h3',{attrs:{"id":"ignore-standalone-config-i"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--ignore-standalone-config")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-i")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#ignore-standalone-config-i","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--ignore-standalone-config")])]),_v(": Specifies that the standalone config file in the repo should be ignored.")]),_v(" "),_c('ul',[_c('li',[_v("Default: the standalone config file is not ignored")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-i")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--ignore-standalone-config")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-i")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("This flag overrides the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Ignore standalone config")]),_v(" field in the CSV config file.")])]),_v(" "),_c('h3',{attrs:{"id":"ignore-filesize-limit-i"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--ignore-filesize-limit")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-I")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#ignore-filesize-limit-i","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--ignore-filesize-limit")])]),_v(": Specifies that the file size limit (both default and user-defined) should be ignored during the analysis.")]),_v(" "),_c('ul',[_c('li',[_v("Default: the file size limit is not ignored")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-I")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--ignore-filesize-limit")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-I")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("All files are subject to a default file size limit or a custom size limit set by the user. Most files should not be\naffected by the default size limit. This flag can be useful for including files in your report that are affected by\nthe size limit. Note that this flag may result in large report sizes and/or slower report generation.")])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("This flag overrides the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Ignore file size limit")]),_v(" field in the CSV config file.")])]),_v(" "),_c('h3',{attrs:{"id":"last-modified-date-l"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--last-modified-date")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-l")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#last-modified-date-l","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--last-modified-date")])]),_v(": Specifies that the last modified date of each line of code should be added to "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("authorship.json")]),_v(".")]),_v(" "),_c('ul',[_c('li',[_v("Default: the last modified date of each line of code will not be added to "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("authorship.json")])]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-l")]),_v(" (lowercase L)")]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--last-modified-date")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-l")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("Cannot be used with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--shallow-cloning")]),_v(". This may result in an incorrect last modified date.")]),_v(" "),_c('li',[_v("The last modified dates will be in the same timezone specified with the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--timezone")]),_v(" flag.")])])]),_v(" "),_c('h3',{attrs:{"id":"originality-threshold-ot"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--originality-threshold")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-ot")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#originality-threshold-ot","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--originality-threshold [VALUE]")])]),_v(": Specifies the cut-off point for partial and full credit\nin "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--analyze-authorship")]),_v(". Author will be given full credit if their contribution exceeds this threshold, else partial\ncredit is given.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("VALUE")]),_v(" Optional. Acceptable range: [0.0, 1.0]."),_c('br'),_v("\nDefault: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("0.51")])]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-ot")])]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--originality-threshold 0.66")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-ot 0.66")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("Requires "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--analyze-authorship")]),_v(" flag.")]),_v(" "),_c('li',[_v("An author's contribution, or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("originality score")]),_v(", is calculated using Levenshtein Distance (Edit Distance) algorithm.\nWe compare the difference between current code line and its previous versions.")])])]),_v(" "),_c('h3',{attrs:{"id":"output-o"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--output")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-o")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#output-o","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--output OUTPUT_DIRECTORY")])]),_v(": Indicates where to save the report generated.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("OUTPUT_DIRECTORY")]),_v(" The location for the generated "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("reposense-report")]),_v(" folder."),_c('br'),_v("\nDefault: current directory")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-o")])]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--output ./foo")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-o ./foo")]),_v(" (the report will be in the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./foo/reposense-report")]),_v(" folder)")])]),_v(" "),_c('h3',{attrs:{"id":"period-p"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--period")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-p")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#period-p","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--period PERIOD")])]),_v(": Specifies the period of analysis window.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("PERIOD")]),_v(" The period of analysis window, in the format "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("nd")]),_v(" (for n days) or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("nw")]),_v(" (for n weeks). It is used to calculate end date if only start date is specified, or calculate end date if only start date is specified.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-p")])]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--period 30d")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--period 4w")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("If both start date and end date are not specified, the date of generating the report will be taken as the end date.")]),_v(" "),_c('li',[_v("May analyze the incorrect date range if used with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since d1")]),_v(". The program will throw a warning.")]),_v(" "),_c('li',[_v("Cannot be used with both "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--until")]),_v(". The program will throw an exception.")])])]),_v(" "),_c('h3',{attrs:{"id":"repo-repos-r"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repo")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repos")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-r")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#repo-repos-r","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repo REPO_LOCATION")])]),_v(": Specifies which repositories to analyze.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("REPO_LOCATION")]),_v(" A list of URLs or the disk location of the git repositories to analyze, separated by spaces.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-r")])]),_v(" "),_c('li',[_v("Examples:\n"),_c('ul',[_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repos https://github.com/reposense/RepoSense.git")])]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repo https://github.com/reposense/RepoSense.git c:/myRepose/foo/bar")]),_v(": analyzes the two specified repos (one remote, one local) and generates one report containing details of both.")])])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Cannot be used with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--config")]),_v(". This flag takes precedence over "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--config")]),_v(".")])]),_v(" "),_c('h3',{attrs:{"id":"shallow-cloning-s"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--shallow-cloning")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-S")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#shallow-cloning-s","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--shallow-cloning")])]),_v(": Clones repositories using Git's shallow cloning functionality, which can significantly reduce the time taken to clone large repositories. However, the flag should not be used for smaller repositories where the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(".git")]),_v(" file is smaller than 500 MB, as it would create overhead.")]),_v(" "),_c('ul',[_c('li',[_v("Default: RepoSense does not clone repositories using Git's shallow cloning functionality.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-S")]),_v(" (uppercase S)")]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--shallow-cloning")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-S")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Cannot be used with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--last-modified-date")]),_v(". This may result in an incorrect last modified date.")])]),_v(" "),_c('h3',{attrs:{"id":"since-s"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-s")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#since-s","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since START_DATE")])]),_v(": Specifies the start date for the period to be analyzed.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("START_DATE")]),_v(" The first day of the period to be analyzed, in the format "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("DD/MM/YYYY")]),_v("."),_c('br'),_v("\nDefault: one month before the current date")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-s")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since 21/10/2017")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-s 21/10/2017")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("If the start date is not specified, only commits made one month before the end date (if specified) or the date of generating the report, will be captured and analyzed.")]),_v(" "),_c('li',[_v("If "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("d1")]),_v(" is specified as the start date ("),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since d1")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-s d1")]),_v("), then the program will search for the earliest commit date of all repositories and use that as the start date.")]),_v(" "),_c('li',[_v("If "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("d1")]),_v(" is specified together with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--period")]),_v(", then the program will warn that the date range being analyzed may be incorrect.")])])]),_v(" "),_c('h3',{attrs:{"id":"timezone-t"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--timezone")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-t")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#timezone-t","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--timezone ZONE_ID")])]),_v(": Indicates the timezone to be used for the analysis.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ZONE_ID")]),_v(" The timezone in the format "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ZONE_ID[±hh[mm]]")]),_v("."),_c('br'),_v("\nDefault: system's default timezone")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-t")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--timezone UTC+08")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-t UTC-1030")])])]),_v(" "),_c('h3',{attrs:{"id":"until-u"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--until")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-u")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#until-u","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--until END_DATE")])]),_v(": Specifies the end date of the analysis period.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("END_DATE")]),_v(" The last date of the period to be analyzed, in the format "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("DD/MM/YYYY")]),_v("."),_c('br'),_v("\nDefault: current date")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-u")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--until 21/10/2017")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-u 21/10/2017")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Note: If the end date is not specified, the date of generating the report will be taken as the end date.")])]),_v(" "),_c('h3',{attrs:{"id":"version-v"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--version")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-V")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#version-v","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--version")])]),_v(": Shows the version of RepoSense.")]),_v(" "),_c('ul',[_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-V")]),_v(" (upper case)")])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Cannot be used with any other flags. This flag takes precedence over all other flags other than "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--help")]),_v(".")])]),_v(" "),_c('h3',{attrs:{"id":"view-v"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--view")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-v")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#view-v","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--view [REPORT_FOLDER]")])]),_v(": Specifies that the report should be opened in the default browser.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("REPORT_FOLDER")]),_v(" Optional. If specified, no analysis will be performed and the report specified by the argument will be opened."),_c('br'),_v("\nDefault: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./reposense-report")])]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-v")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--view")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-v")])])])],1)])],1),_v(" "),_c('p'),_v(" "),_m(5),_v(" "),_m(6),_v(" "),_c('div',{staticClass:"indented-level0"},[_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('span',[_c('span',{staticClass:"glyphicon glyphicon-log-in",attrs:{"aria-hidden":"true"}})]),_v(" Appendix: "),_c('strong',[_v("CLI syntax reference → "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("config")]),_v(" flag")])])]},proxy:true}])},[_v(" "),_c('div',[_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--config CONFIG_DIRECTORY")])]),_v(": Specifies that config files located in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("CONFIG_DIRECTORY")]),_v(" should be used to customize the report.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("CONFIG_DIRECTORY")]),_v(" The directory containing the config files. Should contain a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(" file. Optionally, can contain an "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(" file or/and a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("group-config.csv")]),_v(" file or/and a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("report-config.json")]),_v(" file or/and a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("blurbs.md")]),_v(" file.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-c")])]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar --config ./config")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("Cannot be used with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repos")]),_v(". The "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repos")]),_v(" flag will take precedence over this flag.")]),_v(" "),_c('li',[_v("If both "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repos")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--config")]),_v(" are not specified, RepoSense looks for config files in the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./config")]),_v(" directory.")]),_v(" "),_c('li',[_v("Config files must follow "),_c('a',{attrs:{"href":"/RepoSense/ug/configFiles.html"}},[_v("this")]),_v(" format.")])])])],1)])],1),_v(" "),_c('p'),_v(" "),_c('box',{attrs:{"type":"tip","seamless":""}},[_c('p',[_c('strong',[_v("Managing config files collaboratively")]),_v(": If you use RepoSense to monitor a large number of programmers, it may be more practical to get the programmers to submit PRs to update the config files as necessary ("),_c('tooltip',{scopedSlots:_u([{key:"content",fn:function(){return [_v("a coder realizes some of her code is missing from the report because she used multiple git usernames, and wants to add the additional usernames to the config file")]},proxy:true}])},[_v("example use case")]),_v(").")],1),_v(" "),_c('p',[_v("To ensure that their PRs are correct, you can use "),_c('a',{attrs:{"href":"https://www.netlify.com/blog/2016/07/20/introducing-deploy-previews-in-netlify/"}},[_v("Netlify "),_c('em',[_v("deploy previews")])]),_v(" to preview how the report would look like after the PR has been merged. More details are in the panels below.")]),_v(" "),_c('div',{staticClass:"indented-level0"},[_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('span',[_c('span',{staticClass:"glyphicon glyphicon-log-in",attrs:{"aria-hidden":"true"}})]),_v(" Appendix: "),_c('strong',[_v("Using RepoSense with Netlify → Setting up")])])]},proxy:true}])},[_v(" "),_c('div',[_c('box',{attrs:{"type":"warning","seamless":""}},[_c('p',[_v("Note that Netlify has a low limit for free tier users (only 300 "),_c('em',[_v("build minutes")]),_v(" per month as at June 2020 -- a single report generation can take 2-3 build minutes, longer if your report includes many/big repositories).")])]),_v(" "),_c('h2',{attrs:{"id":"setting-up"}},[_v("Setting up"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#setting-up","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('span',{staticClass:"badge bg-dark bigger-level0"},[_v("Step 1")]),_v(" "),_c('strong',[_v("Fork the "),_c('em',[_v("publish-RepoSense")]),_v(" repository")]),_v(" using this "),_c('a',{attrs:{"href":"https://github.com/RepoSense/publish-RepoSense/fork"}},[_v("link")]),_v(". Optionally, you can rename the fork to match your RepoSense report e.g., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("project-code-dashboard")]),_v(".")]),_v(" "),_c('p',[_c('span',{staticClass:"badge bg-dark bigger-level0"},[_v("Step 2")]),_v(" "),_c('strong',[_v("Set up Netlify for your fork")]),_v(" as described in this "),_c('a',{attrs:{"href":"https://www.netlify.com/blog/2016/09/29/a-step-by-step-guide-deploying-on-netlify/"}},[_v("guide")]),_v("."),_c('br'),_v(" "),_c('mark',[_v("You will need to use the following in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Step 5: Configure Your Settings")]),_v(" of that guide")]),_v(":")]),_v(" "),_c('ul',[_c('li',[_v("build command: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("pip install requests && ./run.sh")]),_c('br')]),_v(" "),_c('li',[_v("publish directory: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./reposense-report")])])]),_v(" "),_c('p',[_v("After Netlify finishes building the site, you should be able to see a dummy report at the URL of your Netlify site.")]),_v(" "),_c('p',[_c('span',{staticClass:"badge bg-dark bigger-level0"},[_v("Step 3")]),_v(" "),_c('strong',[_v("Generate the report you want")]),_v(" by updating the settings in your fork.")]),_v(" "),_c('ol',[_c('li',[_v("Go to the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("run.sh")]),_v(" file of your fork (on GitHub).")]),_v(" "),_c('li',[_v("Update the last line (i.e., the command for running RepoSense) to match the report you want to generate:"),_c('br'),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar --repos FULL_REPO_URL")]),_v(" (assuming you want to generate a default report for just one repo)"),_c('br'),_v("\ne.g., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar --repos https://github.com/reposense/RepoSense.git")]),_v(" ("),_c('mark',[_v("note the .git at the end of the repo URL")]),_v(")")]),_v(" "),_c('li',[_v("Commit the file. This will trigger Netlify to rebuild the report.")]),_v(" "),_c('li',[_v("Go to the URL of your Netlify site to see the updated RepoSense report (it might take about 2-5 minutes for Netlify to generate the report).")])])],1)])],1),_v(" "),_c('p'),_v(" "),_c('div',{staticClass:"indented-level0"},[_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('span',[_c('span',{staticClass:"glyphicon glyphicon-log-in",attrs:{"aria-hidden":"true"}})]),_v(" Appendix: "),_c('strong',[_v("Using RepoSense with Netlify → PR previews")])])]},proxy:true}])},[_v(" "),_c('div',[_c('h2',{attrs:{"id":"pr-previews"}},[_v("PR previews"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#pr-previews","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("After setting up Netlify for your repo containing RepoSense settings, when a PR comes in to that repo to update any setting, you can scroll down the PR page and in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("All checks have passed")]),_v(", click on the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Details")]),_v(" beside "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("deploy/netlify — Deploy preview ready!")]),_v(" to see a preview of the report as per the changes in the PR.\n"),_c('a',{attrs:{"href":"/RepoSense/images/publishingguide-netlifypreview.png","target":"_self"}},[_c('img',{staticClass:"img-fluid",attrs:{"src":"/RepoSense/images/publishingguide-netlifypreview.png","alt":"Netlify Preview","title":"Netlify Preview"}})])])])])],1),_v(" "),_c('p')]),_v(" "),_m(7),_v(" "),_m(8),_v(" "),_m(9),_v(" "),_c('div',{staticClass:"indented-level0"},[_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('span',[_c('span',{staticClass:"glyphicon glyphicon-log-in",attrs:{"aria-hidden":"true"}})]),_v(" Appendix: "),_c('strong',[_v("Standalone config file format")])])]},proxy:true}])},[_v(" "),_c('div',[_c('h2',{attrs:{"id":"config-json-standalone-config-file"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("config.json")]),_v(" (standalone config file)"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#config-json-standalone-config-file","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Repo owners can provide the following additional information to RepoSense using a config file that we call the "),_c('strong',[_c('em',[_v("standalone config file")])]),_v(":")]),_v(" "),_c('ul',[_c('li',[_v("which files/authors/commits to analyze/omit")]),_v(" "),_c('li',[_v("which git and git host usernames belong to which authors")]),_v(" "),_c('li',[_v("the display of an author")])]),_v(" "),_c('p',[_v("To use this feature, add a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("_reposense/config.json")]),_v(" to the root of your repo using the format in the example below ("),_c('a',{attrs:{"href":"https://github.com/reposense/RepoSense/blob/master/_reposense/config.json"}},[_v("another example")]),_v(") and "),_c('strong',[_v("commit it")]),_v(" (reason: RepoSense can see committed code only):")]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"no-line-numbers hljs json"}},[_c('span',[_v("{\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"ignoreGlobList\"")]),_v(": ["),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"about-us/**\"")]),_v(", "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"**index.html\"")]),_v("],\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"formats\"")]),_v(": ["),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"html\"")]),_v(", "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"css\"")]),_v("],\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"ignoreCommitList\"")]),_v(": ["),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"90018e49f129ce7e0abdc8b18e91c9813588c601\"")]),_v(", "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"67890def\"")]),_v(", "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"abc123..def456\"")]),_v("],\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"ignoreAuthorList\"")]),_v(": ["),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"charlie\"")]),_v("],\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"authors\"")]),_v(":\n")]),_c('span',[_v(" [\n")]),_c('span',[_v(" {\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"gitId\"")]),_v(": "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"alice\"")]),_v(",\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"emails\"")]),_v(": ["),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"alice@example.com\"")]),_v(", "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"alicet@example.com\"")]),_v("],\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"displayName\"")]),_v(": "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"Alice T.\"")]),_v(",\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"authorNames\"")]),_v(": ["),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"AT\"")]),_v(", "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"A\"")]),_v("],\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"ignoreGlobList\"")]),_v(": ["),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"**.css\"")]),_v("]\n")]),_c('span',[_v(" },\n")]),_c('span',[_v(" {\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"gitId\"")]),_v(": "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"bob\"")]),_v("\n")]),_c('span',[_v(" }\n")]),_c('span',[_v(" ]\n")]),_c('span',[_v("}\n")])])]),_c('p',[_v("Note: all fields are optional unless specified otherwise.")]),_v(" "),_c('p',[_c('strong',[_v("Fields to provide "),_c('em',[_v("repository-level")]),_v(" info")]),_v(":")]),_v(" "),_c('ul',[_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ignoreGlobList")]),_v(": Folders/files to ignore, specified using the "),_c('a',{attrs:{"href":"https://docs.oracle.com/javase/tutorial/essential/io/fileOps.html#glob"}},[_c('em',[_v("glob format")])]),_v(".")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("formats")]),_v(": File formats to analyze. Binary file formats, such as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("png")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("jpg")]),_v(", will be automatically labelled as the file type "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("binary")]),_v(" in the generated report. Default: all file formats")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ignoreCommitList")]),_v(": The list of commits to ignore during analysis. For accurate results, the commits should be provided with their full hash. Additionally, a range of commits can be specified using the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("..")]),_v(" notation e.g. "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("abc123..def456")]),_v(" (both inclusive).")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ignoreAuthorList")]),_v(": The list of authors to ignore during analysis. Authors specified in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("authors")]),_v(" field or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(" will be also be omitted if they are in this list. Authors should be specified by their "),_c('a',{attrs:{"href":"#a-note-about-git-author-name"}},[_v("Git Author Name")]),_v(".")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("fileSizeLimit")]),_v(": A file size limit for the repository in bytes as a single number without units, that will override the default file size limit. If not specified, the default file size limit will continue to be used.")])]),_v(" "),_c('p',[_c('strong',[_v("Fields to provide "),_c('em',[_v("author-level")]),_v(" info")]),_v(":"),_c('br'),_v("\nNote: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("authors")]),_v(" field should contain "),_c('em',[_v("all")]),_v(" authors that should be captured in the analysis.")]),_v(" "),_c('ul',[_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("gitId")]),_v(": Username of the author. "),_c('span',{staticClass:"badge bg-danger"},[_v("mandatory")]),_v(" field.")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("emails")]),_v(": Associated git emails of the author. For GitHub, this can be found in your "),_c('a',{attrs:{"href":"https://github.com/settings/emails"}},[_v("GitHub settings")]),_v(".")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("displayName")]),_v(": Name to display on the report for this author.")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("authorNames")]),_v(": Git Author Name(s) used in the author's commits. By default, RepoSense assumes an author would use their remote Git Host username as the Git username too. The meaning of "),_c('em',[_v("Git Author Name")]),_v(" is explained in "),_c('a',{attrs:{"href":"#a-note-about-git-author-name"}},[_c('em',[_v("A note about git author name")])]),_v(".")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ignoreGlobList")]),_v(": "),_c('em',[_v("Additional")]),_v(" (i.e. on top of the repo-level "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ignoreGlobList")]),_v(") folders/files to ignore for a specific author. The path glob syntax is specified by the "),_c('a',{attrs:{"href":"https://docs.oracle.com/javase/tutorial/essential/io/fileOps.html#glob"}},[_c('em',[_v("glob format")])]),_v(". In the example above, the actual "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ignoreGlobList")]),_v(" for "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("alice")]),_v(" would be "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("[\"about-us/**\", \"**index.html\", \"**.css\"]")]),_v(".")])]),_v(" "),_c('p',[_v("To verify your standalone configuration is as intended, add the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("_reposense/config.json")]),_v(" to your local copy of repo and run RepoSense against it as follows:"),_c('br')]),_v(" "),_c('ul',[_c('li',[_v("Format: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar --repo LOCAL_REPO_LOCATION")]),_v(" "),_c('br')]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar --repo c:/myRepose/foo/bar")]),_c('br'),_v("\nAfter that, view the report to see if the configuration you specified in the config file is being reflected correctly in the report.")])]),_v(" "),_c('h2',{attrs:{"id":"a-note-about-git-author-name"}},[_v("A note about git author name"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#a-note-about-git-author-name","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Git Author Name")]),_v(" refers to the customizable author's display name set in the local "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(".gitconfig")]),_v(" file. For example, in the Git Log's display:")]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"no-line-numbers hljs"}},[_c('span',[_v("...\n")]),_c('span',[_v("commit cd7f610e0becbdf331d5231887d8010a689f87c7\n")]),_c('span',[_v("Author: ConfiguredAuthorName \n")]),_c('span',[_v("Date: Fri Feb 9 19:14:41 2018 +0800\n")]),_c('span',[_v("\n")]),_c('span',[_v(" Make some changes to show my new author's name\n")]),_c('span',[_v("\n")]),_c('span',[_v("commit e3f699fd4ef128eebce98d5b4e5b3bb06a512f49\n")]),_c('span',[_v("Author: ActualGitHostId \n")]),_c('span',[_v("Date: Fri Feb 9 19:13:13 2018 +0800\n")]),_c('span',[_v("\n")]),_c('span',[_v(" Initial commit\n")]),_c('span',[_v(" ...\n")])])]),_c('p',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ActualGitHostId")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ConfiguredAuthorName")]),_v(" are both "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Git Author Name")]),_v(" of the same author."),_c('br'),_v("\nTo find the author name that you are currently using for your current git repository, run the following command within your git repository:")]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"no-line-numbers hljs"}},[_c('span',[_v("git config user.name\n")])])]),_c('p',[_v("To set the author name to the value you want (e.g., to set it to your GitHub username) for your current git repository, you can use the following command ("),_c('a',{attrs:{"href":"https://www.git-tower.com/learn/git/faq/change-author-name-email"}},[_v("more info")]),_v("):")]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"no-line-numbers hljs"}},[_c('span',[_v("git config user.name \"YOUR_AUTHOR_NAME”\n")])])]),_c('p',[_v("To set the author name to use a default value you want for future git repositories, you can use the following command:")]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"no-line-numbers hljs"}},[_c('span',[_v("git config --global user.name \"YOUR_AUTHOR_NAME”\n")])])]),_c('p',[_v("RepoSense expects the Git Author Name to be the same as author's username on the Git hosting platform (GitHub, GitLab, BitBucket). If an author's "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Git Author Name")]),_v(" is different from their username on the Git hosting platform, the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Git Author Name")]),_v(" needs to be specified in the standalone config file. If the author has more than one "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Git Author Name")]),_v(", multiple values can be entered too.")]),_v(" "),_c('box',{attrs:{"type":"warning","seamless":""}},[_c('p',[_v("Note: Symbols such as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("\"")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("!")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("/")]),_v(" etc. in your author name will be omitted, which may reduce the accuracy of the analysis if 2 names in the repository are approximately similar.")])])],1)])],1),_v(" "),_c('p'),_v(" "),_m(10),_v(" "),_c('div',{staticClass:"indented-level0"},[_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('span',[_c('span',{staticClass:"glyphicon glyphicon-log-in",attrs:{"aria-hidden":"true"}})]),_v(" Appendix: "),_c('strong',[_v("Using "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("@@author")]),_v(" tags")])])]},proxy:true}])},[_v(" "),_c('div',[_c('h1',{staticClass:"display-4",attrs:{"id":"appendix-using-author-tags"}},[_c('span',[_v("Appendix: Using "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("@@author")]),_v(" tags")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#appendix-using-author-tags","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{staticClass:"lead"},[_c('p',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("@@author")]),_v(" tags is a rather invasive but sometimes necessary way to provide more information to RepoSense, by annotating the code being analyzed.")])]),_v(" "),_c('p',[_v("If you want to override the code authorship deduced by RepoSense (which is based on Git blame/log data), you can use "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("@@author")]),_v(" tags to specify certain code segments that should be credited to a certain author irrespective of git history. An example scenario where this is useful is when a method was originally written by one author but a second author did some minor refactoring to it; in this case, RepoSense might attribute the code to the second author while you may want to attribute the code to the first author.")]),_v(" "),_c('p',[_v("There are 2 types of "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("@@author")]),_v(" tags:")]),_v(" "),_c('ul',[_c('li',[_v("Start Tags (format: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("@@author AUTHOR_GIT_AUTHOR_NAME")]),_v("): A start tag indicates the start of a code segment written by the author identified by the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("AUTHOR_GIT_AUTHOR_NAME")]),_v(".")]),_v(" "),_c('li',[_v("End Tags (format: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("@@author")]),_v("): Optional. An end tag indicates the end of a code segment written by the author identified by the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("AUTHOR_GIT_AUTHOR_NAME")]),_v(" of the start tag.")])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("If an end tag is not provided, the code till the next start tag (or the end of the file) will be attributed to the author specified in the start tag above. Use only when necessary to minimize polluting your code with these extra tags.")])]),_v(" "),_c('box',{attrs:{"type":"warning","seamless":""}},[_c('p',[_v("If an end tag is provided without a corresponding start tag, the code until the next start tag, the next end tag, or the end of the file, will not be attributed to any author. This should only be used if the code should not be attributed to any author.")])]),_v(" "),_c('p',[_v("The "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("@@author")]),_v(" tags should be enclosed within a single-line comment, using the comment syntax of the file in concern. Below are some examples:")]),_v(" "),_c('p',[_c('a',{attrs:{"href":"/RepoSense/images/add-author-tags.png","target":"_self"}},[_c('img',{staticClass:"img-fluid",attrs:{"src":"/RepoSense/images/add-author-tags.png","alt":"author tags"}})])]),_v(" "),_c('p',[_v("Currently, the following comment formats are supported:")]),_v(" "),_c('ul',[_c('li',[_v("// @@author authorName")]),_v(" "),_c('li',[_v("/* @@author authorName */")]),_v(" "),_c('li',[_v("/* @@author authorName")]),_v(" "),_c('li',[_v("# @@author authorName")]),_v(" "),_c('li',[_v("% @@author authorName")]),_v(" "),_c('li',[_v("")]),_v(" "),_c('li',[_v("")]),_v(" "),_c('li',[_v("[//]: # (@@author authorName)")])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("RepoSense checks whether the line matches the supported comment formats. If the line does not match the formats,\nRepoSense treats it as a normal line.")]),_v(" "),_c('p',[_v("The code until the next start tag, the end tag, or the end of file will be attributed to that author.")])]),_v(" "),_c('p',[_v("Note: Remember to "),_c('strong',[_v("commit")]),_v(" the files after the changes. (reason: RepoSense can see committed code only)")]),_v(" "),_c('p',[_v("Special thanks to "),_c('a',{attrs:{"href":"https://github.com/se-edu/collate"}},[_v("Collate project")]),_v(" for providing the inspiration for this functionality.")])],1)])],1),_v(" "),_c('p'),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("In both instances, it is "),_c('strong',[_v("necessary to commit any changes")]),_v(" for them to be detected by RepoSense.")])]),_v(" "),_m(11),_v(" "),_m(12),_v(" "),_m(13),_v(" "),_m(14),_v(" "),_c('div',{staticClass:"indented-level0"},[_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('span',[_c('span',{staticClass:"glyphicon glyphicon-log-in",attrs:{"aria-hidden":"true"}})]),_v(" Appendix: "),_c('strong',[_v("CLI syntax reference → "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("assets")]),_v(" flag")])])]},proxy:true}])},[_v(" "),_c('div',[_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--assets ASSETS_DIRECTORY")])]),_v(": Specifies where to place assets for report generation.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ASSETS_DIRECTORY")]),_v(" The directory containing the assets files. A "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("favicon.ico")]),_v(" file can be placed here to customize the favicon of the dashboard, while a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("title.md")]),_v(" file can be placed to customize the "),_c('a',{attrs:{"href":"https://reposense.org/ug/customizingReports.html#add-a-title"}},[_v("title")]),_v(" of the report using "),_c('a',{attrs:{"href":"https://www.markdownguide.org/basic-syntax/"}},[_v("Markdown syntax")]),_v(".")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-a")])]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--assets ./assets")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-a ./assets")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("If "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--assets")]),_v(" is not specified, RepoSense looks for assets in the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./assets")]),_v(" directory.")])])])],1)])],1),_v(" "),_c('p'),_v(" "),_m(15),_v(" "),_c('p',[_v("Do note that the width of the title is bound by the width of the left panel.")]),_v(" "),_m(16),_v(" "),_m(17),_v(" "),_m(18),_v(" "),_c('div',{staticClass:"indented-level0"},[_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('span',[_c('span',{staticClass:"glyphicon glyphicon-log-in",attrs:{"aria-hidden":"true"}})]),_v(" Appendix: "),_c('strong',[_v("Config files format")])])]},proxy:true}])},[_v(" "),_c('div',[_c('h2',{attrs:{"id":"blurbs-md"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("blurbs.md")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#blurbs-md","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("You can optionally use "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("blurbs.md")]),_v(" to add blurbs in Markdown syntax for repository branches. These blurbs will be seen when grouping by "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repo/Branch")]),_v(". ("),_c('a',{attrs:{"href":"https://github.com/reposense/RepoSense/blob/master/docs/ug/blurbs.md"}},[_v("example")]),_v(")")]),_v(" "),_c('p',[_c('strong',[_v("Format")]),_v(":")]),_v(" "),_c('ul',[_c('li',[_v("First line in section: Link to the repository branch.")]),_v(" "),_c('li',[_v("Second line onwards: Blurb content.")]),_v(" "),_c('li',[_v("Delimiter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("")]),_v(". Everything on the line after the delimiter will be ignored.")])])])])],1),_v(" "),_c('p'),_v(" "),_c('p',[_v("Specifying the config directory can be done as follows:")]),_v(" "),_c('div',{staticClass:"indented-level0"},[_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('span',[_c('span',{staticClass:"glyphicon glyphicon-log-in",attrs:{"aria-hidden":"true"}})]),_v(" Appendix: "),_c('strong',[_v("CLI syntax reference → "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("config")]),_v(" flag")])])]},proxy:true}])},[_v(" "),_c('div',[_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--config CONFIG_DIRECTORY")])]),_v(": Specifies that config files located in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("CONFIG_DIRECTORY")]),_v(" should be used to customize the report.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("CONFIG_DIRECTORY")]),_v(" The directory containing the config files. Should contain a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(" file. Optionally, can contain an "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(" file or/and a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("group-config.csv")]),_v(" file or/and a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("report-config.json")]),_v(" file or/and a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("blurbs.md")]),_v(" file.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-c")])]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar --config ./config")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("Cannot be used with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repos")]),_v(". The "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repos")]),_v(" flag will take precedence over this flag.")]),_v(" "),_c('li',[_v("If both "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repos")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--config")]),_v(" are not specified, RepoSense looks for config files in the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./config")]),_v(" directory.")]),_v(" "),_c('li',[_v("Config files must follow "),_c('a',{attrs:{"href":"/RepoSense/ug/configFiles.html"}},[_v("this")]),_v(" format.")])])])],1)])],1),_v(" "),_c('p')],1)],1),_v(" "),_m(19)])} +with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"fixed":""}},[_c('navbar',{attrs:{"type":"dark"},scopedSlots:_u([{key:"brand",fn:function(){return [_c('a',{staticClass:"navbar-brand",attrs:{"href":"/index.html","title":"Home"}},[_c('img',{attrs:{"width":"30px","src":"/favicon.ico"}})])]},proxy:true},{key:"right",fn:function(){return [_c('li',[_c('form',{staticClass:"navbar-form"},[_c('searchbar',{attrs:{"data":searchData,"placeholder":"Search","on-hit":searchCallback,"menu-align-right":""}})],1)])]},proxy:true}])},[_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/index.html"}},[_v("HOME")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/showcase.html"}},[_v("SHOWCASE")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/ug/index.html"}},[_v("USER GUIDE")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/dg/index.html"}},[_v("DEVELOPER GUIDE")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/about.html"}},[_v("ABOUT")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/contact.html"}},[_v("CONTACT")])]),_v(" "),_c('li',{attrs:{"tags":"dev"}},[_c('a',{staticClass:"nav-link",attrs:{"href":"https://reposense.org","target":"_blank"}},[_c('span',[_c('span',{staticClass:"fas fa-external-link-alt",attrs:{"aria-hidden":"true"}}),_v(" PRODUCTION SITE")])])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"https://github.com/RepoSense/reposense","target":"_blank"}},[_c('span',[_c('span',{staticClass:"fab fa-github",attrs:{"aria-hidden":"true"}})])])])]),_v(" "),_m(0)],1),_v(" "),_c('div',{attrs:{"id":"flex-body"}},[_c('overlay-source',{staticClass:"fixed-header-padding",attrs:{"id":"site-nav","tag-name":"nav","to":"site-nav"}},[_c('div',{staticClass:"site-nav-top"},[_c('div',{staticClass:"font-weight-bold mb-2",staticStyle:{"font-size":"1.25rem"}},[_c('span',[_c('strong',[_c('strong',[_v("USER GUIDE")])])])])]),_v(" "),_c('div',{staticClass:"nav-component slim-scroll"},[_c('div',[_c('site-nav',[_c('overlay-source',{staticClass:"site-nav-list site-nav-list-root",attrs:{"tag-name":"ul","to":"mb-site-nav"}},[_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/index.html"}},[_c('strong',[_v("Overview")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/generatingReports.html"}},[_c('strong',[_v("Generating reports")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/usingReports.html"}},[_c('strong',[_v("Using reports")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/customizingReports.html"}},[_c('strong',[_v("Customizing reports")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/sharingReports.html"}},[_c('strong',[_v("Sharing reports")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('strong',[_v("Appendices")]),_v(" "),_c('div',{staticClass:"site-nav-dropdown-btn-container"},[_c('i',{staticClass:"site-nav-dropdown-btn-icon site-nav-rotate-icon",attrs:{"onclick":"handleSiteNavClick(this.parentNode.parentNode, false); event.stopPropagation();"}},[_c('span',{staticClass:"glyphicon glyphicon-menu-down",attrs:{"aria-hidden":"true"}})])])]),_c('ul',{staticClass:"site-nav-dropdown-container site-nav-dropdown-container-open site-nav-list"},[_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/cli.html"}},[_v("CLI syntax reference")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/configFiles.html"}},[_v("Config files format")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/authorConfigSyntax.html"}},[_v("Advanced syntax: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/usingAuthorTags.html"}},[_v("Using "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("@@author")]),_v(" tags")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/withNetlify.html"}},[_v("RepoSense with Netlify")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/withGithubActions.html"}},[_v("RepoSense with GitHub Actions")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/withTravis.html"}},[_v("RepoSense with Travis")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/runSh.html"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("run.sh")]),_v(" format")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/faq.html"}},[_v("FAQ")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/troubleshooting.html"}},[_v("Troubleshooting")])])])])])])],1)],1)])]),_v(" "),_c('div',{staticClass:"fixed-header-padding",attrs:{"id":"content-wrapper"}},[_m(1),_v(" "),_m(2),_v(" "),_m(3),_v(" "),_m(4),_v(" "),_c('div',{staticClass:"indented-level0"},[_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('span',[_c('span',{staticClass:"glyphicon glyphicon-log-in",attrs:{"aria-hidden":"true"}})]),_v(" Appendix: "),_c('strong',[_v("CLI syntax reference")])])]},proxy:true}])},[_v(" "),_c('div',[_c('h1',{staticClass:"display-4",attrs:{"id":"appendix-cli-syntax-reference"}},[_c('span',[_v("Appendix: CLI syntax reference")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#appendix-cli-syntax-reference","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{staticClass:"lead"},[_c('p',[_v("The command "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar")]),_v(" takes several flags.")])]),_v(" "),_c('box',[_c('p',[_c('strong',[_v("Examples")]),_v(":")]),_v(" "),_c('p',[_v("An example of a command using most parameters:"),_c('br'),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar --repos https://github.com/reposense/RepoSense.git --output ./report_folder --since 31/1/2017 --until 31/12/2018 --formats java adoc xml --view --ignore-standalone-config --last-modified-date --timezone UTC+08 --find-previous-authors --analyze-authorship --originality-threshold 0.66")])]),_v(" "),_c('p',[_v("Same command as above but using most parameters in alias format:"),_c('br'),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar -r https://github.com/reposense/RepoSense.git -o ./report_folder -s 31/1/2017 -u 31/12/2018 -f java adoc xml -v -i -l -t UTC+08 -F -A -ot 0.66")])])]),_v(" "),_c('p',[_v("The section below provides explanations for each of the flags.")]),_v(" "),_c('h3',{attrs:{"id":"analyze-authorship-a"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--analyze-authorship")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-A")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#analyze-authorship-a","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--analyze-authorship")])]),_v(": Performs further analysis to distinguish between partial and full credit attribution for\nlines of code assigned to the author.")]),_v(" "),_c('ul',[_c('li',[_v("Default: this feature is turned "),_c('em',[_c('strong',[_v("off")])]),_v(" by default and the author will receive partial credits for all lines of\ncode, as the code lines are at least partial credit but may not qualify for full credit.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-A")]),_v(" (upper case)")]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--analyze-authorship")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-A")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("A darker background colour represents full credit, while a lighter background colour represents partial credit.")]),_v(" "),_c('p',[_v("If the code is attributed to a different author by the user via "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("@@author")]),_v(" tag, then the new author will be given\npartial credit.")])]),_v(" "),_c('h3',{attrs:{"id":"assets-a"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--assets")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-a")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#assets-a","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{attrs:{"id":"section-assets"}},[_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--assets ASSETS_DIRECTORY")])]),_v(": Specifies where to place assets for report generation.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ASSETS_DIRECTORY")]),_v(" The directory containing the assets files. A "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("favicon.ico")]),_v(" file can be placed here to customize the favicon of the dashboard, while a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("title.md")]),_v(" file can be placed to customize the "),_c('a',{attrs:{"href":"https://reposense.org/ug/customizingReports.html#add-a-title"}},[_v("title")]),_v(" of the report using "),_c('a',{attrs:{"href":"https://www.markdownguide.org/basic-syntax/"}},[_v("Markdown syntax")]),_v(".")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-a")])]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--assets ./assets")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-a ./assets")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("If "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--assets")]),_v(" is not specified, RepoSense looks for assets in the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./assets")]),_v(" directory.")])])])],1),_v(" "),_c('h3',{attrs:{"id":"config-c"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--config")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-c")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#config-c","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{attrs:{"id":"section-config"}},[_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--config CONFIG_DIRECTORY")])]),_v(": Specifies that config files located in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("CONFIG_DIRECTORY")]),_v(" should be used to customize the report.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("CONFIG_DIRECTORY")]),_v(" The directory containing the config files. Should contain a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(" file. Optionally, can contain an "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(" file or/and a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("group-config.csv")]),_v(" file or/and a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("report-config.json")]),_v(" file or/and a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("blurbs.md")]),_v(" file.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-c")])]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar --config ./config")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("Cannot be used with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repos")]),_v(". The "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repos")]),_v(" flag will take precedence over this flag.")]),_v(" "),_c('li',[_v("If both "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repos")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--config")]),_v(" are not specified, RepoSense looks for config files in the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./config")]),_v(" directory.")]),_v(" "),_c('li',[_v("Config files must follow "),_c('a',{attrs:{"href":"/RepoSense/ug/configFiles.html"}},[_v("this")]),_v(" format.")])])])],1),_v(" "),_c('h3',{attrs:{"id":"formats-f"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--formats")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-f")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#formats-f","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--formats LIST_OF_FORMATS")])]),_v(": Specifies which file extensions to be included in the analysis.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("LIST_OF_FORMATS")]),_v(" A space-separated list of file extensions that should be included in the analysis."),_c('br'),_v("\nDefault: all file formats")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-f")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--formats css fxml gradle")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-f css fxml gradle")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Binary file formats, such as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("jpg")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("png")]),_v(","),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("exe")]),_v(","),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("zip")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("rar")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("docx")]),_v(", and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("pptx")]),_v(", all will be labelled as the file type "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("binary")]),_v(" in the generated report.")])]),_v(" "),_c('h3',{attrs:{"id":"find-previous-authors-f"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--find-previous-authors")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-F")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#find-previous-authors-f","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--find-previous-authors")])]),_v(": Utilizes Git blame's ignore revisions functionality, RepoSense will attempt to blame the line changes caused by commits in the ignore commit list to the previous authors who altered those lines (if available).")]),_v(" "),_c('ul',[_c('li',[_v("Default: RepoSense will assume that no authors are responsible for the code changes in the lines altered by commits in the ignore commit list.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-F")]),_v(" (uppercase F)")]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--find-previous-authors")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-F")])])]),_v(" "),_c('h3',{attrs:{"id":"help-h"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--help")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-h")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#help-h","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--help")])]),_v(": Shows the help message.")]),_v(" "),_c('ul',[_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-h")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Cannot be used with any other flags. This flag takes precedence over all other flags.")])]),_v(" "),_c('h3',{attrs:{"id":"ignore-standalone-config-i"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--ignore-standalone-config")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-i")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#ignore-standalone-config-i","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--ignore-standalone-config")])]),_v(": Specifies that the standalone config file in the repo should be ignored.")]),_v(" "),_c('ul',[_c('li',[_v("Default: the standalone config file is not ignored")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-i")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--ignore-standalone-config")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-i")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("This flag overrides the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Ignore standalone config")]),_v(" field in the CSV config file.")])]),_v(" "),_c('h3',{attrs:{"id":"ignore-filesize-limit-i"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--ignore-filesize-limit")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-I")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#ignore-filesize-limit-i","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--ignore-filesize-limit")])]),_v(": Specifies that the file size limit (both default and user-defined) should be ignored during the analysis.")]),_v(" "),_c('ul',[_c('li',[_v("Default: the file size limit is not ignored")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-I")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--ignore-filesize-limit")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-I")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("All files are subject to a default file size limit or a custom size limit set by the user. Most files should not be\naffected by the default size limit. This flag can be useful for including files in your report that are affected by\nthe size limit. Note that this flag may result in large report sizes and/or slower report generation.")])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("This flag overrides the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Ignore file size limit")]),_v(" field in the CSV config file.")])]),_v(" "),_c('h3',{attrs:{"id":"last-modified-date-l"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--last-modified-date")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-l")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#last-modified-date-l","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--last-modified-date")])]),_v(": Specifies that the last modified date of each line of code should be added to "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("authorship.json")]),_v(".")]),_v(" "),_c('ul',[_c('li',[_v("Default: the last modified date of each line of code will not be added to "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("authorship.json")])]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-l")]),_v(" (lowercase L)")]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--last-modified-date")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-l")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("Cannot be used with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--shallow-cloning")]),_v(". This may result in an incorrect last modified date.")]),_v(" "),_c('li',[_v("The last modified dates will be in the same timezone specified with the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--timezone")]),_v(" flag.")])])]),_v(" "),_c('h3',{attrs:{"id":"originality-threshold-ot"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--originality-threshold")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-ot")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#originality-threshold-ot","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--originality-threshold [VALUE]")])]),_v(": Specifies the cut-off point for partial and full credit\nin "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--analyze-authorship")]),_v(". Author will be given full credit if their contribution exceeds this threshold, else partial\ncredit is given.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("VALUE")]),_v(" Optional. Acceptable range: [0.0, 1.0]."),_c('br'),_v("\nDefault: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("0.51")])]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-ot")])]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--originality-threshold 0.66")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-ot 0.66")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("Requires "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--analyze-authorship")]),_v(" flag.")]),_v(" "),_c('li',[_v("An author's contribution, or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("originality score")]),_v(", is calculated using Levenshtein Distance (Edit Distance) algorithm.\nWe compare the difference between current code line and its previous versions.")])])]),_v(" "),_c('h3',{attrs:{"id":"output-o"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--output")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-o")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#output-o","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--output OUTPUT_DIRECTORY")])]),_v(": Indicates where to save the report generated.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("OUTPUT_DIRECTORY")]),_v(" The location for the generated "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("reposense-report")]),_v(" folder."),_c('br'),_v("\nDefault: current directory")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-o")])]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--output ./foo")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-o ./foo")]),_v(" (the report will be in the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./foo/reposense-report")]),_v(" folder)")])]),_v(" "),_c('h3',{attrs:{"id":"period-p"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--period")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-p")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#period-p","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--period PERIOD")])]),_v(": Specifies the period of analysis window.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("PERIOD")]),_v(" The period of analysis window, in the format "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("nd")]),_v(" (for n days) or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("nw")]),_v(" (for n weeks). It is used to calculate end date if only start date is specified, or calculate end date if only start date is specified.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-p")])]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--period 30d")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--period 4w")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("If both start date and end date are not specified, the date of generating the report will be taken as the end date.")]),_v(" "),_c('li',[_v("May analyze the incorrect date range if used with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since d1")]),_v(". The program will throw a warning.")]),_v(" "),_c('li',[_v("Cannot be used with both "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--until")]),_v(". The program will throw an exception.")])])]),_v(" "),_c('h3',{attrs:{"id":"repo-repos-r"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repo")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repos")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-r")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#repo-repos-r","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repo REPO_LOCATION")])]),_v(": Specifies which repositories to analyze.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("REPO_LOCATION")]),_v(" A list of URLs or the disk location of the git repositories to analyze, separated by spaces.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-r")])]),_v(" "),_c('li',[_v("Examples:\n"),_c('ul',[_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repos https://github.com/reposense/RepoSense.git")])]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repo https://github.com/reposense/RepoSense.git c:/myRepose/foo/bar")]),_v(": analyzes the two specified repos (one remote, one local) and generates one report containing details of both.")])])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Cannot be used with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--config")]),_v(". This flag takes precedence over "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--config")]),_v(".")])]),_v(" "),_c('h3',{attrs:{"id":"shallow-cloning-s"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--shallow-cloning")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-S")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#shallow-cloning-s","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--shallow-cloning")])]),_v(": Clones repositories using Git's shallow cloning functionality, which can significantly reduce the time taken to clone large repositories. However, the flag should not be used for smaller repositories where the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(".git")]),_v(" file is smaller than 500 MB, as it would create overhead.")]),_v(" "),_c('ul',[_c('li',[_v("Default: RepoSense does not clone repositories using Git's shallow cloning functionality.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-S")]),_v(" (uppercase S)")]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--shallow-cloning")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-S")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Cannot be used with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--last-modified-date")]),_v(". This may result in an incorrect last modified date.")])]),_v(" "),_c('h3',{attrs:{"id":"since-s"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-s")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#since-s","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since START_DATE")])]),_v(": Specifies the start date for the period to be analyzed.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("START_DATE")]),_v(" The first day of the period to be analyzed, in the format "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("DD/MM/YYYY")]),_v("."),_c('br'),_v("\nDefault: one month before the current date")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-s")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since 21/10/2017")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-s 21/10/2017")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("If the start date is not specified, only commits made one month before the end date (if specified) or the date of generating the report, will be captured and analyzed.")]),_v(" "),_c('li',[_v("If "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("d1")]),_v(" is specified as the start date ("),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since d1")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-s d1")]),_v("), then the program will search for the earliest commit date of all repositories and use that as the start date.")]),_v(" "),_c('li',[_v("If "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("d1")]),_v(" is specified together with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--period")]),_v(", then the program will warn that the date range being analyzed may be incorrect.")])])]),_v(" "),_c('h3',{attrs:{"id":"timezone-t"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--timezone")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-t")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#timezone-t","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--timezone ZONE_ID")])]),_v(": Indicates the timezone to be used for the analysis.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ZONE_ID")]),_v(" The timezone in the format "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ZONE_ID[±hh[mm]]")]),_v("."),_c('br'),_v("\nDefault: system's default timezone")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-t")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--timezone UTC+08")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-t UTC-1030")])])]),_v(" "),_c('h3',{attrs:{"id":"until-u"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--until")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-u")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#until-u","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--until END_DATE")])]),_v(": Specifies the end date of the analysis period.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("END_DATE")]),_v(" The last date of the period to be analyzed, in the format "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("DD/MM/YYYY")]),_v("."),_c('br'),_v("\nDefault: current date")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-u")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--until 21/10/2017")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-u 21/10/2017")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Note: If the end date is not specified, the date of generating the report will be taken as the end date.")])]),_v(" "),_c('h3',{attrs:{"id":"version-v"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--version")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-V")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#version-v","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--version")])]),_v(": Shows the version of RepoSense.")]),_v(" "),_c('ul',[_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-V")]),_v(" (upper case)")])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Cannot be used with any other flags. This flag takes precedence over all other flags other than "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--help")]),_v(".")])]),_v(" "),_c('h3',{attrs:{"id":"view-v"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--view")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-v")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#view-v","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--view [REPORT_FOLDER]")])]),_v(": Specifies that the report should be opened in the default browser.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("REPORT_FOLDER")]),_v(" Optional. If specified, no analysis will be performed and the report specified by the argument will be opened."),_c('br'),_v("\nDefault: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./reposense-report")])]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-v")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--view")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-v")])])])],1)])],1),_v(" "),_c('p'),_v(" "),_m(5),_v(" "),_m(6),_v(" "),_c('div',{staticClass:"indented-level0"},[_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('span',[_c('span',{staticClass:"glyphicon glyphicon-log-in",attrs:{"aria-hidden":"true"}})]),_v(" Appendix: "),_c('strong',[_v("CLI syntax reference → "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("config")]),_v(" flag")])])]},proxy:true}])},[_v(" "),_c('div',[_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--config CONFIG_DIRECTORY")])]),_v(": Specifies that config files located in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("CONFIG_DIRECTORY")]),_v(" should be used to customize the report.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("CONFIG_DIRECTORY")]),_v(" The directory containing the config files. Should contain a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(" file. Optionally, can contain an "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(" file or/and a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("group-config.csv")]),_v(" file or/and a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("report-config.json")]),_v(" file or/and a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("blurbs.md")]),_v(" file.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-c")])]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar --config ./config")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("Cannot be used with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repos")]),_v(". The "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repos")]),_v(" flag will take precedence over this flag.")]),_v(" "),_c('li',[_v("If both "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repos")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--config")]),_v(" are not specified, RepoSense looks for config files in the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./config")]),_v(" directory.")]),_v(" "),_c('li',[_v("Config files must follow "),_c('a',{attrs:{"href":"/RepoSense/ug/configFiles.html"}},[_v("this")]),_v(" format.")])])])],1)])],1),_v(" "),_c('p'),_v(" "),_c('box',{attrs:{"type":"tip","seamless":""}},[_c('p',[_c('strong',[_v("Managing config files collaboratively")]),_v(": If you use RepoSense to monitor a large number of programmers, it may be more practical to get the programmers to submit PRs to update the config files as necessary ("),_c('tooltip',{scopedSlots:_u([{key:"content",fn:function(){return [_v("a coder realizes some of her code is missing from the report because she used multiple git usernames, and wants to add the additional usernames to the config file")]},proxy:true}])},[_v("example use case")]),_v(").")],1),_v(" "),_c('p',[_v("To ensure that their PRs are correct, you can use "),_c('a',{attrs:{"href":"https://www.netlify.com/blog/2016/07/20/introducing-deploy-previews-in-netlify/"}},[_v("Netlify "),_c('em',[_v("deploy previews")])]),_v(" to preview how the report would look like after the PR has been merged. More details are in the panels below.")]),_v(" "),_c('div',{staticClass:"indented-level0"},[_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('span',[_c('span',{staticClass:"glyphicon glyphicon-log-in",attrs:{"aria-hidden":"true"}})]),_v(" Appendix: "),_c('strong',[_v("Using RepoSense with Netlify → Setting up")])])]},proxy:true}])},[_v(" "),_c('div',[_c('box',{attrs:{"type":"warning","seamless":""}},[_c('p',[_v("Note that Netlify has a low limit for free tier users (only 300 "),_c('em',[_v("build minutes")]),_v(" per month as at June 2020 -- a single report generation can take 2-3 build minutes, longer if your report includes many/big repositories).")])]),_v(" "),_c('h2',{attrs:{"id":"setting-up"}},[_v("Setting up"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#setting-up","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('span',{staticClass:"badge bg-dark bigger-level0"},[_v("Step 1")]),_v(" "),_c('strong',[_v("Fork the "),_c('em',[_v("publish-RepoSense")]),_v(" repository")]),_v(" using this "),_c('a',{attrs:{"href":"https://github.com/RepoSense/publish-RepoSense/fork"}},[_v("link")]),_v(". Optionally, you can rename the fork to match your RepoSense report e.g., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("project-code-dashboard")]),_v(".")]),_v(" "),_c('p',[_c('span',{staticClass:"badge bg-dark bigger-level0"},[_v("Step 2")]),_v(" "),_c('strong',[_v("Set up Netlify for your fork")]),_v(" as described in this "),_c('a',{attrs:{"href":"https://www.netlify.com/blog/2016/09/29/a-step-by-step-guide-deploying-on-netlify/"}},[_v("guide")]),_v("."),_c('br'),_v(" "),_c('mark',[_v("You will need to use the following in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Step 5: Configure Your Settings")]),_v(" of that guide")]),_v(":")]),_v(" "),_c('ul',[_c('li',[_v("build command: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("pip install requests && ./run.sh")]),_c('br')]),_v(" "),_c('li',[_v("publish directory: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./reposense-report")])])]),_v(" "),_c('p',[_v("After Netlify finishes building the site, you should be able to see a dummy report at the URL of your Netlify site.")]),_v(" "),_c('p',[_c('span',{staticClass:"badge bg-dark bigger-level0"},[_v("Step 3")]),_v(" "),_c('strong',[_v("Generate the report you want")]),_v(" by updating the settings in your fork.")]),_v(" "),_c('ol',[_c('li',[_v("Go to the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("run.sh")]),_v(" file of your fork (on GitHub).")]),_v(" "),_c('li',[_v("Update the last line (i.e., the command for running RepoSense) to match the report you want to generate:"),_c('br'),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar --repos FULL_REPO_URL")]),_v(" (assuming you want to generate a default report for just one repo)"),_c('br'),_v("\ne.g., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar --repos https://github.com/reposense/RepoSense.git")]),_v(" ("),_c('mark',[_v("note the .git at the end of the repo URL")]),_v(")")]),_v(" "),_c('li',[_v("Commit the file. This will trigger Netlify to rebuild the report.")]),_v(" "),_c('li',[_v("Go to the URL of your Netlify site to see the updated RepoSense report (it might take about 2-5 minutes for Netlify to generate the report).")])])],1)])],1),_v(" "),_c('p'),_v(" "),_c('div',{staticClass:"indented-level0"},[_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('span',[_c('span',{staticClass:"glyphicon glyphicon-log-in",attrs:{"aria-hidden":"true"}})]),_v(" Appendix: "),_c('strong',[_v("Using RepoSense with Netlify → PR previews")])])]},proxy:true}])},[_v(" "),_c('div',[_c('h2',{attrs:{"id":"pr-previews"}},[_v("PR previews"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#pr-previews","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("After setting up Netlify for your repo containing RepoSense settings, when a PR comes in to that repo to update any setting, you can scroll down the PR page and in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("All checks have passed")]),_v(", click on the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Details")]),_v(" beside "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("deploy/netlify — Deploy preview ready!")]),_v(" to see a preview of the report as per the changes in the PR.\n"),_c('a',{attrs:{"href":"/RepoSense/images/publishingguide-netlifypreview.png","target":"_self"}},[_c('img',{staticClass:"img-fluid",attrs:{"src":"/RepoSense/images/publishingguide-netlifypreview.png","alt":"Netlify Preview","title":"Netlify Preview"}})])])])])],1),_v(" "),_c('p')]),_v(" "),_m(7),_v(" "),_m(8),_v(" "),_m(9),_v(" "),_c('div',{staticClass:"indented-level0"},[_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('span',[_c('span',{staticClass:"glyphicon glyphicon-log-in",attrs:{"aria-hidden":"true"}})]),_v(" Appendix: "),_c('strong',[_v("Standalone config file format")])])]},proxy:true}])},[_v(" "),_c('div',[_c('h2',{attrs:{"id":"config-json-standalone-config-file"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("config.json")]),_v(" (standalone config file)"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#config-json-standalone-config-file","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Repo owners can provide the following additional information to RepoSense using a config file that we call the "),_c('strong',[_c('em',[_v("standalone config file")])]),_v(":")]),_v(" "),_c('ul',[_c('li',[_v("which files/authors/commits to analyze/omit")]),_v(" "),_c('li',[_v("which git and git host usernames belong to which authors")]),_v(" "),_c('li',[_v("the display of an author")])]),_v(" "),_c('p',[_v("To use this feature, add a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("_reposense/config.json")]),_v(" to the root of your repo using the format in the example below ("),_c('a',{attrs:{"href":"https://github.com/reposense/RepoSense/blob/master/_reposense/config.json"}},[_v("another example")]),_v(") and "),_c('strong',[_v("commit it")]),_v(" (reason: RepoSense can see committed code only):")]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"no-line-numbers hljs json"}},[_c('span',[_v("{\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"ignoreGlobList\"")]),_v(": ["),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"about-us/**\"")]),_v(", "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"**index.html\"")]),_v("],\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"formats\"")]),_v(": ["),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"html\"")]),_v(", "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"css\"")]),_v("],\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"ignoreCommitList\"")]),_v(": ["),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"90018e49f129ce7e0abdc8b18e91c9813588c601\"")]),_v(", "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"67890def\"")]),_v(", "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"abc123..def456\"")]),_v("],\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"ignoreAuthorList\"")]),_v(": ["),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"charlie\"")]),_v("],\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"authors\"")]),_v(":\n")]),_c('span',[_v(" [\n")]),_c('span',[_v(" {\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"gitId\"")]),_v(": "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"alice\"")]),_v(",\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"emails\"")]),_v(": ["),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"alice@example.com\"")]),_v(", "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"alicet@example.com\"")]),_v("],\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"displayName\"")]),_v(": "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"Alice T.\"")]),_v(",\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"authorNames\"")]),_v(": ["),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"AT\"")]),_v(", "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"A\"")]),_v("],\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"ignoreGlobList\"")]),_v(": ["),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"**.css\"")]),_v("]\n")]),_c('span',[_v(" },\n")]),_c('span',[_v(" {\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"gitId\"")]),_v(": "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"bob\"")]),_v("\n")]),_c('span',[_v(" }\n")]),_c('span',[_v(" ]\n")]),_c('span',[_v("}\n")])])]),_c('p',[_v("Note: all fields are optional unless specified otherwise.")]),_v(" "),_c('p',[_c('strong',[_v("Fields to provide "),_c('em',[_v("repository-level")]),_v(" info")]),_v(":")]),_v(" "),_c('ul',[_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ignoreGlobList")]),_v(": Folders/files to ignore, specified using the "),_c('a',{attrs:{"href":"https://docs.oracle.com/javase/tutorial/essential/io/fileOps.html#glob"}},[_c('em',[_v("glob format")])]),_v(".")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("formats")]),_v(": File formats to analyze. Binary file formats, such as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("png")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("jpg")]),_v(", will be automatically labelled as the file type "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("binary")]),_v(" in the generated report. Default: all file formats")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ignoreCommitList")]),_v(": The list of commits to ignore during analysis. For accurate results, the commits should be provided with their full hash. Additionally, a range of commits can be specified using the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("..")]),_v(" notation e.g. "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("abc123..def456")]),_v(" (both inclusive).")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ignoreAuthorList")]),_v(": The list of authors to ignore during analysis. Authors specified in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("authors")]),_v(" field or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(" will be also be omitted if they are in this list. Authors should be specified by their "),_c('a',{attrs:{"href":"#a-note-about-git-author-name"}},[_v("Git Author Name")]),_v(".")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("fileSizeLimit")]),_v(": A file size limit for the repository in bytes as a single number without units, that will override the default file size limit. If not specified, the default file size limit will continue to be used.")])]),_v(" "),_c('p',[_c('strong',[_v("Fields to provide "),_c('em',[_v("author-level")]),_v(" info")]),_v(":"),_c('br'),_v("\nNote: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("authors")]),_v(" field should contain "),_c('em',[_v("all")]),_v(" authors that should be captured in the analysis.")]),_v(" "),_c('ul',[_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("gitId")]),_v(": Username of the author. "),_c('span',{staticClass:"badge bg-danger"},[_v("mandatory")]),_v(" field.")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("emails")]),_v(": Associated git emails of the author. For GitHub, this can be found in your "),_c('a',{attrs:{"href":"https://github.com/settings/emails"}},[_v("GitHub settings")]),_v(".")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("displayName")]),_v(": Name to display on the report for this author.")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("authorNames")]),_v(": Git Author Name(s) used in the author's commits. By default, RepoSense assumes an author would use their remote Git Host username as the Git username too. The meaning of "),_c('em',[_v("Git Author Name")]),_v(" is explained in "),_c('a',{attrs:{"href":"#a-note-about-git-author-name"}},[_c('em',[_v("A note about git author name")])]),_v(".")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ignoreGlobList")]),_v(": "),_c('em',[_v("Additional")]),_v(" (i.e. on top of the repo-level "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ignoreGlobList")]),_v(") folders/files to ignore for a specific author. The path glob syntax is specified by the "),_c('a',{attrs:{"href":"https://docs.oracle.com/javase/tutorial/essential/io/fileOps.html#glob"}},[_c('em',[_v("glob format")])]),_v(". In the example above, the actual "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ignoreGlobList")]),_v(" for "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("alice")]),_v(" would be "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("[\"about-us/**\", \"**index.html\", \"**.css\"]")]),_v(".")])]),_v(" "),_c('p',[_v("To verify your standalone configuration is as intended, add the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("_reposense/config.json")]),_v(" to your local copy of repo and run RepoSense against it as follows:"),_c('br')]),_v(" "),_c('ul',[_c('li',[_v("Format: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar --repo LOCAL_REPO_LOCATION")]),_v(" "),_c('br')]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar --repo c:/myRepose/foo/bar")]),_c('br'),_v("\nAfter that, view the report to see if the configuration you specified in the config file is being reflected correctly in the report.")])]),_v(" "),_c('h2',{attrs:{"id":"a-note-about-git-author-name"}},[_v("A note about git author name"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#a-note-about-git-author-name","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Git Author Name")]),_v(" refers to the customizable author's display name set in the local "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(".gitconfig")]),_v(" file. For example, in the Git Log's display:")]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"no-line-numbers hljs"}},[_c('span',[_v("...\n")]),_c('span',[_v("commit cd7f610e0becbdf331d5231887d8010a689f87c7\n")]),_c('span',[_v("Author: ConfiguredAuthorName \n")]),_c('span',[_v("Date: Fri Feb 9 19:14:41 2018 +0800\n")]),_c('span',[_v("\n")]),_c('span',[_v(" Make some changes to show my new author's name\n")]),_c('span',[_v("\n")]),_c('span',[_v("commit e3f699fd4ef128eebce98d5b4e5b3bb06a512f49\n")]),_c('span',[_v("Author: ActualGitHostId \n")]),_c('span',[_v("Date: Fri Feb 9 19:13:13 2018 +0800\n")]),_c('span',[_v("\n")]),_c('span',[_v(" Initial commit\n")]),_c('span',[_v(" ...\n")])])]),_c('p',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ActualGitHostId")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ConfiguredAuthorName")]),_v(" are both "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Git Author Name")]),_v(" of the same author."),_c('br'),_v("\nTo find the author name that you are currently using for your current git repository, run the following command within your git repository:")]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"no-line-numbers hljs"}},[_c('span',[_v("git config user.name\n")])])]),_c('p',[_v("To set the author name to the value you want (e.g., to set it to your GitHub username) for your current git repository, you can use the following command ("),_c('a',{attrs:{"href":"https://www.git-tower.com/learn/git/faq/change-author-name-email"}},[_v("more info")]),_v("):")]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"no-line-numbers hljs"}},[_c('span',[_v("git config user.name \"YOUR_AUTHOR_NAME”\n")])])]),_c('p',[_v("To set the author name to use a default value you want for future git repositories, you can use the following command:")]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"no-line-numbers hljs"}},[_c('span',[_v("git config --global user.name \"YOUR_AUTHOR_NAME”\n")])])]),_c('p',[_v("RepoSense expects the Git Author Name to be the same as author's username on the Git hosting platform (GitHub, GitLab, BitBucket). If an author's "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Git Author Name")]),_v(" is different from their username on the Git hosting platform, the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Git Author Name")]),_v(" needs to be specified in the standalone config file. If the author has more than one "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Git Author Name")]),_v(", multiple values can be entered too.")]),_v(" "),_c('box',{attrs:{"type":"warning","seamless":""}},[_c('p',[_v("Note: Symbols such as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("\"")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("!")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("/")]),_v(" etc. in your author name will be omitted, which may reduce the accuracy of the analysis if 2 names in the repository are approximately similar.")])])],1)])],1),_v(" "),_c('p'),_v(" "),_m(10),_v(" "),_c('div',{staticClass:"indented-level0"},[_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('span',[_c('span',{staticClass:"glyphicon glyphicon-log-in",attrs:{"aria-hidden":"true"}})]),_v(" Appendix: "),_c('strong',[_v("Using "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("@@author")]),_v(" tags")])])]},proxy:true}])},[_v(" "),_c('div',[_c('h1',{staticClass:"display-4",attrs:{"id":"appendix-using-author-tags"}},[_c('span',[_v("Appendix: Using "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("@@author")]),_v(" tags")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#appendix-using-author-tags","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{staticClass:"lead"},[_c('p',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("@@author")]),_v(" tags is a rather invasive but sometimes necessary way to provide more information to RepoSense, by annotating the code being analyzed.")])]),_v(" "),_c('p',[_v("If you want to override the code authorship deduced by RepoSense (which is based on Git blame/log data), you can use "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("@@author")]),_v(" tags to specify certain code segments that should be credited to a certain author irrespective of git history. An example scenario where this is useful is when a method was originally written by one author but a second author did some minor refactoring to it; in this case, RepoSense might attribute the code to the second author while you may want to attribute the code to the first author.")]),_v(" "),_c('p',[_v("There are 2 types of "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("@@author")]),_v(" tags:")]),_v(" "),_c('ul',[_c('li',[_v("Start Tags (format: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("@@author AUTHOR_GIT_AUTHOR_NAME")]),_v("): A start tag indicates the start of a code segment written by the author identified by the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("AUTHOR_GIT_AUTHOR_NAME")]),_v(".")]),_v(" "),_c('li',[_v("End Tags (format: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("@@author")]),_v("): Optional. An end tag indicates the end of a code segment written by the author identified by the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("AUTHOR_GIT_AUTHOR_NAME")]),_v(" of the start tag.")])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("If an end tag is not provided, the code till the next start tag (or the end of the file) will be attributed to the author specified in the start tag above. Use only when necessary to minimize polluting your code with these extra tags.")])]),_v(" "),_c('box',{attrs:{"type":"warning","seamless":""}},[_c('p',[_v("If an end tag is provided without a corresponding start tag, the code until the next start tag, the next end tag, or the end of the file, will not be attributed to any author. This should only be used if the code should not be attributed to any author.")])]),_v(" "),_c('p',[_v("The "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("@@author")]),_v(" tags should be enclosed within a single-line comment, using the comment syntax of the file in concern. Below are some examples:")]),_v(" "),_c('p',[_c('a',{attrs:{"href":"/RepoSense/images/add-author-tags.png","target":"_self"}},[_c('img',{staticClass:"img-fluid",attrs:{"src":"/RepoSense/images/add-author-tags.png","alt":"author tags"}})])]),_v(" "),_c('p',[_v("Currently, the following comment formats are supported:")]),_v(" "),_c('ul',[_c('li',[_v("// @@author authorName")]),_v(" "),_c('li',[_v("/* @@author authorName */")]),_v(" "),_c('li',[_v("/* @@author authorName")]),_v(" "),_c('li',[_v("# @@author authorName")]),_v(" "),_c('li',[_v("% @@author authorName")]),_v(" "),_c('li',[_v("")]),_v(" "),_c('li',[_v("")]),_v(" "),_c('li',[_v("[//]: # (@@author authorName)")])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("RepoSense checks whether the line matches the supported comment formats. If the line does not match the formats,\nRepoSense treats it as a normal line.")]),_v(" "),_c('p',[_v("The code until the next start tag, the end tag, or the end of file will be attributed to that author.")])]),_v(" "),_c('p',[_v("Note: Remember to "),_c('strong',[_v("commit")]),_v(" the files after the changes. (reason: RepoSense can see committed code only)")]),_v(" "),_c('p',[_v("Special thanks to "),_c('a',{attrs:{"href":"https://github.com/se-edu/collate"}},[_v("Collate project")]),_v(" for providing the inspiration for this functionality.")])],1)])],1),_v(" "),_c('p'),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("In both instances, it is "),_c('strong',[_v("necessary to commit any changes")]),_v(" for them to be detected by RepoSense.")])]),_v(" "),_m(11),_v(" "),_m(12),_v(" "),_m(13),_v(" "),_m(14),_v(" "),_c('div',{staticClass:"indented-level0"},[_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('span',[_c('span',{staticClass:"glyphicon glyphicon-log-in",attrs:{"aria-hidden":"true"}})]),_v(" Appendix: "),_c('strong',[_v("CLI syntax reference → "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("assets")]),_v(" flag")])])]},proxy:true}])},[_v(" "),_c('div',[_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--assets ASSETS_DIRECTORY")])]),_v(": Specifies where to place assets for report generation.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ASSETS_DIRECTORY")]),_v(" The directory containing the assets files. A "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("favicon.ico")]),_v(" file can be placed here to customize the favicon of the dashboard, while a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("title.md")]),_v(" file can be placed to customize the "),_c('a',{attrs:{"href":"https://reposense.org/ug/customizingReports.html#add-a-title"}},[_v("title")]),_v(" of the report using "),_c('a',{attrs:{"href":"https://www.markdownguide.org/basic-syntax/"}},[_v("Markdown syntax")]),_v(".")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-a")])]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--assets ./assets")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-a ./assets")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("If "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--assets")]),_v(" is not specified, RepoSense looks for assets in the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./assets")]),_v(" directory.")])])])],1)])],1),_v(" "),_c('p'),_v(" "),_m(15),_v(" "),_c('p',[_v("Do note that the width of the title is bound by the width of the left panel.")]),_v(" "),_m(16),_v(" "),_m(17),_v(" "),_m(18),_v(" "),_c('div',{staticClass:"indented-level0"},[_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('span',[_c('span',{staticClass:"glyphicon glyphicon-log-in",attrs:{"aria-hidden":"true"}})]),_v(" Appendix: "),_c('strong',[_v("Config files format")])])]},proxy:true}])},[_v(" "),_c('div',[_c('h2',{attrs:{"id":"blurbs-md"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("blurbs.md")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#blurbs-md","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("You can optionally use "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("blurbs.md")]),_v(" to add blurbs in Markdown syntax for repository branches. These blurbs will be seen when grouping by "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repo/Branch")]),_v(". ("),_c('a',{attrs:{"href":"https://github.com/reposense/RepoSense/blob/master/docs/ug/blurbs.md"}},[_v("example")]),_v(")")]),_v(" "),_c('p',[_c('strong',[_v("Format")]),_v(":")]),_v(" "),_c('ul',[_c('li',[_v("First line in section: Link to the repository branch.")]),_v(" "),_c('li',[_v("Second line onwards: Blurb content.")]),_v(" "),_c('li',[_v("Delimiter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("")]),_v(". Everything on the line after the delimiter will be ignored.")])])])])],1),_v(" "),_c('p'),_v(" "),_c('p',[_v("Specifying the config directory can be done as follows:")]),_v(" "),_c('div',{staticClass:"indented-level0"},[_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('span',[_c('span',{staticClass:"glyphicon glyphicon-log-in",attrs:{"aria-hidden":"true"}})]),_v(" Appendix: "),_c('strong',[_v("CLI syntax reference → "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("config")]),_v(" flag")])])]},proxy:true}])},[_v(" "),_c('div',[_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--config CONFIG_DIRECTORY")])]),_v(": Specifies that config files located in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("CONFIG_DIRECTORY")]),_v(" should be used to customize the report.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("CONFIG_DIRECTORY")]),_v(" The directory containing the config files. Should contain a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(" file. Optionally, can contain an "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(" file or/and a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("group-config.csv")]),_v(" file or/and a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("report-config.json")]),_v(" file or/and a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("blurbs.md")]),_v(" file.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-c")])]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar --config ./config")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("Cannot be used with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repos")]),_v(". The "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repos")]),_v(" flag will take precedence over this flag.")]),_v(" "),_c('li',[_v("If both "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repos")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--config")]),_v(" are not specified, RepoSense looks for config files in the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./config")]),_v(" directory.")]),_v(" "),_c('li',[_v("Config files must follow "),_c('a',{attrs:{"href":"/RepoSense/ug/configFiles.html"}},[_v("this")]),_v(" format.")])])])],1)])],1),_v(" "),_c('p')],1),_v(" "),_c('overlay-source',{staticClass:"fixed-header-padding",attrs:{"id":"page-nav","tag-name":"nav","to":"page-nav"}},[_c('div',{staticClass:"nav-component slim-scroll"},[_c('overlay-source',{staticClass:"nav nav-pills flex-column my-0 small no-flex-wrap",attrs:{"id":"mb-page-nav","tag-name":"nav","to":"mb-page-nav"}},[_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#customizing-reports"}},[_v("Customizing reports‎")]),_v(" "),_c('nav',{staticClass:"nav nav-pills flex-column my-0 nested no-flex-wrap"},[_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#customize-using-cli-flags"}},[_v("Customize using CLI flags‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#customize-using-csv-config-files"}},[_v("Customize using CSV config files‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#get-target-repos-to-provide-more-info"}},[_v("Get target repos to provide more info‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#personalizing-reports"}},[_v("Personalizing Reports‎")])])])],1)])],1),_v(" "),_m(19)])} }; var pageVueStaticRenderFns = [function anonymous( ) { @@ -62,6 +62,6 @@ with(this){return _c('h4',{attrs:{"id":"add-blurbs-for-branches"}},[_v("Add blur with(this){return _c('p',[_v("A blurb can be added for a repository branch by creating a file titled "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("blurbs.md")]),_v(" in the config directory. The blurbs will be visible when grouping by "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repo/Branch")]),_v(". The format of the file is given below:")])} },function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('small',[_v("["),_c('span',[_c('strong',[_v("Powered by")])]),_v(" "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"30"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.2")]),_v(", generated on Tue, 14 May 2024, 13:12:51 UTC]")])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('small',[_v("["),_c('span',[_c('strong',[_v("Powered by")])]),_v(" "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"30"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.2")]),_v(", generated on Thu, 16 May 2024, 22:31:25 UTC]")])])])} }]; \ No newline at end of file diff --git a/ug/faq.html b/ug/faq.html index 89e52f9122..3c8da49a17 100644 --- a/ug/faq.html +++ b/ug/faq.html @@ -11,13 +11,13 @@ - +

    You are looking at the user documentation for the most recent master branch of RepoSense (not released to the public yet). The documentation for the latest public release is here.

    Appendix: FAQ

    Q: Does RepoSense work on private repositories?

    A: RepoSense will first clone the git repository to be analyzed; thus, if you do not have access to the repository, we cannot run the analysis.
    To enable RepoSense to work on private repositories, ensure that you have enabled access to your private repository in your git terminal first before running the analysis.

    Q: How do formats work?

    A: Formats are the file extensions, which is the suffix at the end of a filename that indicates what type of file it is.
    The formats/file extensions to be analyzed by RepoSense can be specified through the standalone config file, repo-config file, and command line.

    Q: How does ignore glob list work?

    A: Glob is the pattern to specify a set of filenames with wildcard characters. Ignore glob list is the list of patterns to specify all the files in the repository which should be ignored from analysis.
    -The ignore glob list can be specified through the standalone config file, repo-config file, and author-config file.

    [Powered by MarkBind 5.5.2, generated on Tue, 14 May 2024, 13:12:51 UTC]
    +The ignore glob list can be specified through the standalone config file, repo-config file, and author-config file.

    [Powered by MarkBind 5.5.2, generated on Thu, 16 May 2024, 22:31:25 UTC]
    diff --git a/ug/faq.page-vue-render.js b/ug/faq.page-vue-render.js index 89b29b14e2..63680aa1f8 100644 --- a/ug/faq.page-vue-render.js +++ b/ug/faq.page-vue-render.js @@ -1,7 +1,7 @@ var pageVueRenderFn = function anonymous( ) { -with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"fixed":""}},[_c('navbar',{attrs:{"type":"dark"},scopedSlots:_u([{key:"brand",fn:function(){return [_c('a',{staticClass:"navbar-brand",attrs:{"href":"/index.html","title":"Home"}},[_c('img',{attrs:{"width":"30px","src":"/favicon.ico"}})])]},proxy:true},{key:"right",fn:function(){return [_c('li',[_c('form',{staticClass:"navbar-form"},[_c('searchbar',{attrs:{"data":searchData,"placeholder":"Search","on-hit":searchCallback,"menu-align-right":""}})],1)])]},proxy:true}])},[_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/index.html"}},[_v("HOME")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/showcase.html"}},[_v("SHOWCASE")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/ug/index.html"}},[_v("USER GUIDE")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/dg/index.html"}},[_v("DEVELOPER GUIDE")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/about.html"}},[_v("ABOUT")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/contact.html"}},[_v("CONTACT")])]),_v(" "),_c('li',{attrs:{"tags":"dev"}},[_c('a',{staticClass:"nav-link",attrs:{"href":"https://reposense.org","target":"_blank"}},[_c('span',[_c('span',{staticClass:"fas fa-external-link-alt",attrs:{"aria-hidden":"true"}}),_v(" PRODUCTION SITE")])])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"https://github.com/RepoSense/reposense","target":"_blank"}},[_c('span',[_c('span',{staticClass:"fab fa-github",attrs:{"aria-hidden":"true"}})])])])]),_v(" "),_m(0)],1),_v(" "),_c('div',{attrs:{"id":"flex-body"}},[_c('overlay-source',{staticClass:"fixed-header-padding",attrs:{"id":"site-nav","tag-name":"nav","to":"site-nav"}},[_c('div',{staticClass:"site-nav-top"},[_c('div',{staticClass:"font-weight-bold mb-2",staticStyle:{"font-size":"1.25rem"}},[_c('span',[_c('strong',[_c('strong',[_v("USER GUIDE")])])])])]),_v(" "),_c('div',{staticClass:"nav-component slim-scroll"},[_c('div',[_c('site-nav',[_c('overlay-source',{staticClass:"site-nav-list site-nav-list-root",attrs:{"tag-name":"ul","to":"mb-site-nav"}},[_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/index.html"}},[_c('strong',[_v("Overview")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/generatingReports.html"}},[_c('strong',[_v("Generating reports")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/usingReports.html"}},[_c('strong',[_v("Using reports")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/customizingReports.html"}},[_c('strong',[_v("Customizing reports")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/sharingReports.html"}},[_c('strong',[_v("Sharing reports")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('strong',[_v("Appendices")]),_v(" "),_c('div',{staticClass:"site-nav-dropdown-btn-container"},[_c('i',{staticClass:"site-nav-dropdown-btn-icon site-nav-rotate-icon",attrs:{"onclick":"handleSiteNavClick(this.parentNode.parentNode, false); event.stopPropagation();"}},[_c('span',{staticClass:"glyphicon glyphicon-menu-down",attrs:{"aria-hidden":"true"}})])])]),_c('ul',{staticClass:"site-nav-dropdown-container site-nav-dropdown-container-open site-nav-list"},[_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/cli.html"}},[_v("CLI syntax reference")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/configFiles.html"}},[_v("Config files format")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/authorConfigSyntax.html"}},[_v("Advanced syntax: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/usingAuthorTags.html"}},[_v("Using "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("@@author")]),_v(" tags")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/withNetlify.html"}},[_v("RepoSense with Netlify")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/withGithubActions.html"}},[_v("RepoSense with GitHub Actions")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/withTravis.html"}},[_v("RepoSense with Travis")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/runSh.html"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("run.sh")]),_v(" format")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/faq.html"}},[_v("FAQ")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/troubleshooting.html"}},[_v("Troubleshooting")])])])])])])],1)],1)])]),_v(" "),_m(1)],1),_v(" "),_m(2)])} +with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"fixed":""}},[_c('navbar',{attrs:{"type":"dark"},scopedSlots:_u([{key:"brand",fn:function(){return [_c('a',{staticClass:"navbar-brand",attrs:{"href":"/index.html","title":"Home"}},[_c('img',{attrs:{"width":"30px","src":"/favicon.ico"}})])]},proxy:true},{key:"right",fn:function(){return [_c('li',[_c('form',{staticClass:"navbar-form"},[_c('searchbar',{attrs:{"data":searchData,"placeholder":"Search","on-hit":searchCallback,"menu-align-right":""}})],1)])]},proxy:true}])},[_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/index.html"}},[_v("HOME")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/showcase.html"}},[_v("SHOWCASE")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/ug/index.html"}},[_v("USER GUIDE")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/dg/index.html"}},[_v("DEVELOPER GUIDE")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/about.html"}},[_v("ABOUT")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/contact.html"}},[_v("CONTACT")])]),_v(" "),_c('li',{attrs:{"tags":"dev"}},[_c('a',{staticClass:"nav-link",attrs:{"href":"https://reposense.org","target":"_blank"}},[_c('span',[_c('span',{staticClass:"fas fa-external-link-alt",attrs:{"aria-hidden":"true"}}),_v(" PRODUCTION SITE")])])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"https://github.com/RepoSense/reposense","target":"_blank"}},[_c('span',[_c('span',{staticClass:"fab fa-github",attrs:{"aria-hidden":"true"}})])])])]),_v(" "),_m(0)],1),_v(" "),_c('div',{attrs:{"id":"flex-body"}},[_c('overlay-source',{staticClass:"fixed-header-padding",attrs:{"id":"site-nav","tag-name":"nav","to":"site-nav"}},[_c('div',{staticClass:"site-nav-top"},[_c('div',{staticClass:"font-weight-bold mb-2",staticStyle:{"font-size":"1.25rem"}},[_c('span',[_c('strong',[_c('strong',[_v("USER GUIDE")])])])])]),_v(" "),_c('div',{staticClass:"nav-component slim-scroll"},[_c('div',[_c('site-nav',[_c('overlay-source',{staticClass:"site-nav-list site-nav-list-root",attrs:{"tag-name":"ul","to":"mb-site-nav"}},[_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/index.html"}},[_c('strong',[_v("Overview")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/generatingReports.html"}},[_c('strong',[_v("Generating reports")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/usingReports.html"}},[_c('strong',[_v("Using reports")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/customizingReports.html"}},[_c('strong',[_v("Customizing reports")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/sharingReports.html"}},[_c('strong',[_v("Sharing reports")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('strong',[_v("Appendices")]),_v(" "),_c('div',{staticClass:"site-nav-dropdown-btn-container"},[_c('i',{staticClass:"site-nav-dropdown-btn-icon site-nav-rotate-icon",attrs:{"onclick":"handleSiteNavClick(this.parentNode.parentNode, false); event.stopPropagation();"}},[_c('span',{staticClass:"glyphicon glyphicon-menu-down",attrs:{"aria-hidden":"true"}})])])]),_c('ul',{staticClass:"site-nav-dropdown-container site-nav-dropdown-container-open site-nav-list"},[_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/cli.html"}},[_v("CLI syntax reference")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/configFiles.html"}},[_v("Config files format")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/authorConfigSyntax.html"}},[_v("Advanced syntax: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/usingAuthorTags.html"}},[_v("Using "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("@@author")]),_v(" tags")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/withNetlify.html"}},[_v("RepoSense with Netlify")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/withGithubActions.html"}},[_v("RepoSense with GitHub Actions")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/withTravis.html"}},[_v("RepoSense with Travis")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/runSh.html"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("run.sh")]),_v(" format")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/faq.html"}},[_v("FAQ")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/troubleshooting.html"}},[_v("Troubleshooting")])])])])])])],1)],1)])]),_v(" "),_m(1),_v(" "),_c('overlay-source',{staticClass:"fixed-header-padding",attrs:{"id":"page-nav","tag-name":"nav","to":"page-nav"}},[_c('div',{staticClass:"nav-component slim-scroll"},[_c('overlay-source',{staticClass:"nav nav-pills flex-column my-0 small no-flex-wrap",attrs:{"id":"mb-page-nav","tag-name":"nav","to":"mb-page-nav"}},[_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#appendix-faq"}},[_v("Appendix: FAQ‎")]),_v(" "),_c('nav',{staticClass:"nav nav-pills flex-column my-0 nested no-flex-wrap"},[_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#q-does-reposense-work-on-private-repositories"}},[_v("Q: Does RepoSense work on private repositories?‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#q-how-do-formats-work"}},[_v("Q: How do formats work?‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#q-how-does-ignore-glob-list-work"}},[_v("Q: How does ignore glob list work?‎")])])])],1)])],1),_v(" "),_m(2)])} }; var pageVueStaticRenderFns = [function anonymous( ) { @@ -11,6 +11,6 @@ with(this){return _c('div',{staticClass:"text-center bg-warning p-2",attrs:{"tag with(this){return _c('div',{staticClass:"fixed-header-padding",attrs:{"id":"content-wrapper"}},[_c('h1',{staticClass:"display-4",attrs:{"id":"appendix-faq"}},[_c('span',[_v("Appendix: FAQ")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#appendix-faq","onclick":"event.stopPropagation()"}})]),_v(" "),_c('h3',{attrs:{"id":"q-does-reposense-work-on-private-repositories"}},[_v("Q: Does RepoSense work on private repositories?"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#q-does-reposense-work-on-private-repositories","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_v("A:")]),_v(" "),_c('em',[_v("RepoSense")]),_v(" will first clone the git repository to be analyzed; thus, if you do not have access to the repository, we cannot run the analysis."),_c('br'),_v("\nTo enable "),_c('em',[_v("RepoSense")]),_v(" to work on private repositories, ensure that you have enabled access to your private repository in your git terminal first before running the analysis.")]),_v(" "),_c('h3',{attrs:{"id":"q-how-do-formats-work"}},[_v("Q: How do formats work?"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#q-how-do-formats-work","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_v("A:")]),_v(" "),_c('strong',[_v("Formats")]),_v(" are the "),_c('a',{attrs:{"href":"https://techterms.com/definition/fileextension"}},[_v("file extensions")]),_v(", which is the "),_c('strong',[_v("suffix")]),_v(" at the end of a filename that indicates what type of file it is."),_c('br'),_v("\nThe formats/file extensions to be analyzed by "),_c('em',[_v("RepoSense")]),_v(" can be specified through the "),_c('a',{attrs:{"href":"/RepoSense/ug/configFiles.html#config-json-standalone-config-file"}},[_v("standalone config file")]),_v(", "),_c('a',{attrs:{"href":"/RepoSense/ug/configFiles.html#repo-config-csv"}},[_v("repo-config file")]),_v(", and "),_c('a',{attrs:{"href":"/RepoSense/ug/cli.html#formats-f"}},[_v("command line")]),_v(".")]),_v(" "),_c('h3',{attrs:{"id":"q-how-does-ignore-glob-list-work"}},[_v("Q: How does ignore glob list work?"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#q-how-does-ignore-glob-list-work","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_v("A:")]),_v(" "),_c('a',{attrs:{"href":"https://en.wikipedia.org/wiki/Glob_(programming)"}},[_v("Glob")]),_v(" is the pattern to specify a set of filenames with "),_c('a',{attrs:{"href":"https://www.computerhope.com/jargon/w/wildcard.htm"}},[_v("wildcard characters")]),_v(". "),_c('strong',[_v("Ignore glob list")]),_v(" is the list of patterns to specify all the files in the repository which should be ignored from analysis."),_c('br'),_v("\nThe ignore glob list can be specified through the "),_c('a',{attrs:{"href":"/RepoSense/ug/configFiles.html#config-json-standalone-config-file"}},[_v("standalone config file")]),_v(", "),_c('a',{attrs:{"href":"/RepoSense/ug/configFiles.html#repo-config-csv"}},[_v("repo-config file")]),_v(", and "),_c('a',{attrs:{"href":"/RepoSense/ug/configFiles.html#author-config-csv"}},[_v("author-config file")]),_v(".")])])} },function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('small',[_v("["),_c('span',[_c('strong',[_v("Powered by")])]),_v(" "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"30"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.2")]),_v(", generated on Tue, 14 May 2024, 13:12:51 UTC]")])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('small',[_v("["),_c('span',[_c('strong',[_v("Powered by")])]),_v(" "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"30"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.2")]),_v(", generated on Thu, 16 May 2024, 22:31:25 UTC]")])])])} }]; \ No newline at end of file diff --git a/ug/generatingReports.html b/ug/generatingReports.html index 49ba0ff093..76f9ad1c0d 100644 --- a/ug/generatingReports.html +++ b/ug/generatingReports.html @@ -11,13 +11,13 @@ - +

    You are looking at the user documentation for the most recent master branch of RepoSense (not released to the public yet). The documentation for the latest public release is here.

    Generating a report

    Let's look at different ways to generate RepoSense reports.

    • If you have Java on your computer, the straight-forward way to generate a report is to use the RepoSense executable to generate the report locally on your computer, as explained in the Generating reports locally section below.

    • If you don't have Java on your computer or do not wish to run the executable on your computer, some alternatives are provided in the Generating reports remotely section below.

    RepoSense is built to analyze any type of git repo, remote or local. It works best when analyzing remote repositories hosted on GitHub, GitLab or BitBucket. For other types of repositories, external links are disabled.

    Generating reports locally

    1. Ensure you have the prerequisites:

      • Java 11 or later (download ).
      • git 2.23 or later on the command line. (download ).
        run git --version in your OS terminal to confirm the version.
    2. Download the latest JAR file from our releases.

    3. Generate a report: The simplest use case for RepoSense is to generate a report for the recent history of a repo.
      command: java -jar RepoSense.jar --repos LIST_OF_REPO_URLS --view
      -Examples:

      • java -jar RepoSense.jar --repos https://github.com/reposense/RepoSense.git --view (note the .git at the end of the repo URL)
      • java -jar RepoSense.jar --repos https://github.com/reposense/RepoSense.git c:/myRepose/foo/bar --view analyzes the two specified repos (one remote, one local).

      The above commands will analyze the given repo(s) for commits done within the last month and open the report in your default Browser.

    To learn how to generate a report using , head over to the Customizing reports section.

    Generating reports remotely

    You can generate a RepoSense report remotely without installing/running anything on your computer. This is particularly useful when you are deciding whether to adopt RepoSense.

    The easiest option is to use Netlify. The instructions are given below.

    You can also use the following options. While they are more work to set up, they are more suitable as a permanent solution due to their generous free tier.

    [Powered by MarkBind 5.5.2, generated on Tue, 14 May 2024, 13:12:51 UTC]
    +Examples:

    • java -jar RepoSense.jar --repos https://github.com/reposense/RepoSense.git --view (note the .git at the end of the repo URL)
    • java -jar RepoSense.jar --repos https://github.com/reposense/RepoSense.git c:/myRepose/foo/bar --view analyzes the two specified repos (one remote, one local).

    The above commands will analyze the given repo(s) for commits done within the last month and open the report in your default Browser.

    To learn how to generate a report using , head over to the Customizing reports section.

    Generating reports remotely

    You can generate a RepoSense report remotely without installing/running anything on your computer. This is particularly useful when you are deciding whether to adopt RepoSense.

    The easiest option is to use Netlify. The instructions are given below.

    You can also use the following options. While they are more work to set up, they are more suitable as a permanent solution due to their generous free tier.

    [Powered by MarkBind 5.5.2, generated on Thu, 16 May 2024, 22:31:25 UTC]
    diff --git a/ug/generatingReports.page-vue-render.js b/ug/generatingReports.page-vue-render.js index 1ecf83974d..77734a5d8a 100644 --- a/ug/generatingReports.page-vue-render.js +++ b/ug/generatingReports.page-vue-render.js @@ -1,7 +1,7 @@ var pageVueRenderFn = function anonymous( ) { -with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"fixed":""}},[_c('navbar',{attrs:{"type":"dark"},scopedSlots:_u([{key:"brand",fn:function(){return [_c('a',{staticClass:"navbar-brand",attrs:{"href":"/index.html","title":"Home"}},[_c('img',{attrs:{"width":"30px","src":"/favicon.ico"}})])]},proxy:true},{key:"right",fn:function(){return [_c('li',[_c('form',{staticClass:"navbar-form"},[_c('searchbar',{attrs:{"data":searchData,"placeholder":"Search","on-hit":searchCallback,"menu-align-right":""}})],1)])]},proxy:true}])},[_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/index.html"}},[_v("HOME")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/showcase.html"}},[_v("SHOWCASE")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/ug/index.html"}},[_v("USER GUIDE")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/dg/index.html"}},[_v("DEVELOPER GUIDE")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/about.html"}},[_v("ABOUT")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/contact.html"}},[_v("CONTACT")])]),_v(" "),_c('li',{attrs:{"tags":"dev"}},[_c('a',{staticClass:"nav-link",attrs:{"href":"https://reposense.org","target":"_blank"}},[_c('span',[_c('span',{staticClass:"fas fa-external-link-alt",attrs:{"aria-hidden":"true"}}),_v(" PRODUCTION SITE")])])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"https://github.com/RepoSense/reposense","target":"_blank"}},[_c('span',[_c('span',{staticClass:"fab fa-github",attrs:{"aria-hidden":"true"}})])])])]),_v(" "),_m(0)],1),_v(" "),_c('div',{attrs:{"id":"flex-body"}},[_c('overlay-source',{staticClass:"fixed-header-padding",attrs:{"id":"site-nav","tag-name":"nav","to":"site-nav"}},[_c('div',{staticClass:"site-nav-top"},[_c('div',{staticClass:"font-weight-bold mb-2",staticStyle:{"font-size":"1.25rem"}},[_c('span',[_c('strong',[_c('strong',[_v("USER GUIDE")])])])])]),_v(" "),_c('div',{staticClass:"nav-component slim-scroll"},[_c('div',[_c('site-nav',[_c('overlay-source',{staticClass:"site-nav-list site-nav-list-root",attrs:{"tag-name":"ul","to":"mb-site-nav"}},[_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/index.html"}},[_c('strong',[_v("Overview")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/generatingReports.html"}},[_c('strong',[_v("Generating reports")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/usingReports.html"}},[_c('strong',[_v("Using reports")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/customizingReports.html"}},[_c('strong',[_v("Customizing reports")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/sharingReports.html"}},[_c('strong',[_v("Sharing reports")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('strong',[_v("Appendices")]),_v(" "),_c('div',{staticClass:"site-nav-dropdown-btn-container"},[_c('i',{staticClass:"site-nav-dropdown-btn-icon site-nav-rotate-icon",attrs:{"onclick":"handleSiteNavClick(this.parentNode.parentNode, false); event.stopPropagation();"}},[_c('span',{staticClass:"glyphicon glyphicon-menu-down",attrs:{"aria-hidden":"true"}})])])]),_c('ul',{staticClass:"site-nav-dropdown-container site-nav-dropdown-container-open site-nav-list"},[_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/cli.html"}},[_v("CLI syntax reference")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/configFiles.html"}},[_v("Config files format")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/authorConfigSyntax.html"}},[_v("Advanced syntax: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/usingAuthorTags.html"}},[_v("Using "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("@@author")]),_v(" tags")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/withNetlify.html"}},[_v("RepoSense with Netlify")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/withGithubActions.html"}},[_v("RepoSense with GitHub Actions")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/withTravis.html"}},[_v("RepoSense with Travis")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/runSh.html"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("run.sh")]),_v(" format")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/faq.html"}},[_v("FAQ")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/troubleshooting.html"}},[_v("Troubleshooting")])])])])])])],1)],1)])]),_v(" "),_c('div',{staticClass:"fixed-header-padding",attrs:{"id":"content-wrapper"}},[_m(1),_v(" "),_m(2),_v(" "),_m(3),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("RepoSense is built to analyze any type of git repo, remote or local. It works best when analyzing remote repositories hosted on GitHub, GitLab or BitBucket.\nFor other types of repositories, external links are disabled.")])]),_v(" "),_m(4),_v(" "),_m(5),_v(" "),_c('p',[_c('strong',[_v("To learn how to generate a report using "),_c('tooltip',{scopedSlots:_u([{key:"content",fn:function(){return [_v("e.g., generate a report for a different period, for specific file types, for specific authors, etc.")]},proxy:true}])},[_v("other settings")])],1),_v(", head over to the "),_m(6),_v(" section.")]),_v(" "),_m(7),_v(" "),_m(8),_v(" "),_m(9),_v(" "),_c('div',{staticClass:"indented-level0"},[_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('span',[_c('span',{staticClass:"glyphicon glyphicon-log-in",attrs:{"aria-hidden":"true"}})]),_v(" Appendix: "),_c('strong',[_v("Using RepoSense with Netlify → Setting up")])])]},proxy:true}])},[_v(" "),_c('div',[_c('box',{attrs:{"type":"warning","seamless":""}},[_c('p',[_v("Note that Netlify has a low limit for free tier users (only 300 "),_c('em',[_v("build minutes")]),_v(" per month as at June 2020 -- a single report generation can take 2-3 build minutes, longer if your report includes many/big repositories).")])]),_v(" "),_c('h2',{attrs:{"id":"setting-up"}},[_v("Setting up"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#setting-up","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('span',{staticClass:"badge bg-dark bigger-level0"},[_v("Step 1")]),_v(" "),_c('strong',[_v("Fork the "),_c('em',[_v("publish-RepoSense")]),_v(" repository")]),_v(" using this "),_c('a',{attrs:{"href":"https://github.com/RepoSense/publish-RepoSense/fork"}},[_v("link")]),_v(". Optionally, you can rename the fork to match your RepoSense report e.g., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("project-code-dashboard")]),_v(".")]),_v(" "),_c('p',[_c('span',{staticClass:"badge bg-dark bigger-level0"},[_v("Step 2")]),_v(" "),_c('strong',[_v("Set up Netlify for your fork")]),_v(" as described in this "),_c('a',{attrs:{"href":"https://www.netlify.com/blog/2016/09/29/a-step-by-step-guide-deploying-on-netlify/"}},[_v("guide")]),_v("."),_c('br'),_v(" "),_c('mark',[_v("You will need to use the following in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Step 5: Configure Your Settings")]),_v(" of that guide")]),_v(":")]),_v(" "),_c('ul',[_c('li',[_v("build command: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("pip install requests && ./run.sh")]),_c('br')]),_v(" "),_c('li',[_v("publish directory: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./reposense-report")])])]),_v(" "),_c('p',[_v("After Netlify finishes building the site, you should be able to see a dummy report at the URL of your Netlify site.")]),_v(" "),_c('p',[_c('span',{staticClass:"badge bg-dark bigger-level0"},[_v("Step 3")]),_v(" "),_c('strong',[_v("Generate the report you want")]),_v(" by updating the settings in your fork.")]),_v(" "),_c('ol',[_c('li',[_v("Go to the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("run.sh")]),_v(" file of your fork (on GitHub).")]),_v(" "),_c('li',[_v("Update the last line (i.e., the command for running RepoSense) to match the report you want to generate:"),_c('br'),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar --repos FULL_REPO_URL")]),_v(" (assuming you want to generate a default report for just one repo)"),_c('br'),_v("\ne.g., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar --repos https://github.com/reposense/RepoSense.git")]),_v(" ("),_c('mark',[_v("note the .git at the end of the repo URL")]),_v(")")]),_v(" "),_c('li',[_v("Commit the file. This will trigger Netlify to rebuild the report.")]),_v(" "),_c('li',[_v("Go to the URL of your Netlify site to see the updated RepoSense report (it might take about 2-5 minutes for Netlify to generate the report).")])])],1)])],1),_v(" "),_c('p'),_v(" "),_m(10),_v(" "),_c('div',{staticClass:"indented-level0"},[_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('span',[_c('span',{staticClass:"glyphicon glyphicon-log-in",attrs:{"aria-hidden":"true"}})]),_v(" Appendix: "),_c('strong',[_v("Using RepoSense with GitHub Actions → Setting up")])])]},proxy:true}])},[_v(" "),_c('div',[_c('div',{staticClass:"lead"},[_c('p',[_v("You can use "),_c('a',{attrs:{"href":"https://github.com/features/actions"}},[_c('em',[_v("GitHub Actions")])]),_v(" (together with other GitHub tools) to automate the generating and publishing of RepoSense reports.")])]),_v(" "),_c('h2',{attrs:{"id":"setting-up-2"}},[_v("Setting up"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#setting-up-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',[_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("The instructions below assume you are using GitHub pages to host your report.")])]),_v(" "),_c('p',[_c('span',{staticClass:"badge bg-dark bigger-level0"},[_v("Step 1")]),_v(" "),_c('strong',[_v("Fork the "),_c('em',[_v("publish-RepoSense")]),_v(" repository")]),_v(" using this "),_c('a',{attrs:{"href":"https://github.com/RepoSense/publish-RepoSense/fork"}},[_v("link")]),_v(". Optionally, you can rename the fork to match your RepoSense report e.g., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("project-code-dashboard")]),_v(".")])],1),_v(" "),_c('p',[_c('span',{staticClass:"badge bg-dark bigger-level0"},[_v("Step 2")]),_v(" "),_c('strong',[_v("Activate GitHub Actions on the forked repository:")])]),_v(" "),_c('ol',[_c('li',[_v("Go to the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Actions")]),_v(" page of your fork of the "),_c('a',{attrs:{"href":"https://github.com/reposense/publish-RepoSense"}},[_v("publish-RepoSense")]),_v(" repo.")]),_v(" "),_c('li',[_v("Click on the green button that says "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("I understand my workflows, go ahead and enable them")]),_v(" to enable GitHub Actions on your new repository.")])]),_v(" "),_c('p',[_c('span',{staticClass:"badge bg-dark bigger-level0"},[_v("Step 3")]),_v(" "),_c('strong',[_v("Update report configuration:")])]),_v(" "),_c('div',[_c('p',[_v("In your fork, edit "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("run.sh")]),_v(" (and if applicable, "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("group-config.csv")]),_v(") to customize the command line parameters or repositories to be analyzed.")]),_v(" "),_c('div',{staticClass:"indented-level0"},[_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('span',[_c('span',{staticClass:"glyphicon glyphicon-log-in",attrs:{"aria-hidden":"true"}})]),_v(" Appendix: "),_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("run.sh")]),_v(" format")])])]},proxy:true}])},[_v(" "),_c('div',[_c('h1',{staticClass:"display-4",attrs:{"id":"appendix-run-sh-format"}},[_c('span',[_v("Appendix: run.sh format")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#appendix-run-sh-format","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{staticClass:"lead"},[_c('p',[_c('a',{attrs:{"href":"https://github.com/reposense/publish-RepoSense/blob/master/run.sh"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("run.sh")])]),_v(" is a script used for automating RepoSense report generation.")])]),_v(" "),_c('h3',{attrs:{"id":"customizing-the-reposense-command"}},[_v("Customizing the RepoSense command"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#customizing-the-reposense-command","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("You can update the RepoSense command (i.e., the last line) in the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("run.sh")]),_v(" to match your needs.")]),_v(" "),_c('div',{staticClass:"indented-level0"},[_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('span',[_c('span',{staticClass:"glyphicon glyphicon-log-in",attrs:{"aria-hidden":"true"}})]),_v(" Appendix: "),_c('strong',[_v("CLI syntax reference")])])]},proxy:true}])},[_v(" "),_c('div',[_c('h1',{staticClass:"display-4",attrs:{"id":"appendix-cli-syntax-reference"}},[_c('span',[_v("Appendix: CLI syntax reference")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#appendix-cli-syntax-reference","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{staticClass:"lead"},[_c('p',[_v("The command "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar")]),_v(" takes several flags.")])]),_v(" "),_c('box',[_c('p',[_c('strong',[_v("Examples")]),_v(":")]),_v(" "),_c('p',[_v("An example of a command using most parameters:"),_c('br'),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar --repos https://github.com/reposense/RepoSense.git --output ./report_folder --since 31/1/2017 --until 31/12/2018 --formats java adoc xml --view --ignore-standalone-config --last-modified-date --timezone UTC+08 --find-previous-authors --analyze-authorship --originality-threshold 0.66")])]),_v(" "),_c('p',[_v("Same command as above but using most parameters in alias format:"),_c('br'),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar -r https://github.com/reposense/RepoSense.git -o ./report_folder -s 31/1/2017 -u 31/12/2018 -f java adoc xml -v -i -l -t UTC+08 -F -A -ot 0.66")])])]),_v(" "),_c('p',[_v("The section below provides explanations for each of the flags.")]),_v(" "),_c('h3',{attrs:{"id":"analyze-authorship-a"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--analyze-authorship")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-A")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#analyze-authorship-a","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--analyze-authorship")])]),_v(": Performs further analysis to distinguish between partial and full credit attribution for\nlines of code assigned to the author.")]),_v(" "),_c('ul',[_c('li',[_v("Default: this feature is turned "),_c('em',[_c('strong',[_v("off")])]),_v(" by default and the author will receive partial credits for all lines of\ncode, as the code lines are at least partial credit but may not qualify for full credit.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-A")]),_v(" (upper case)")]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--analyze-authorship")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-A")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("A darker background colour represents full credit, while a lighter background colour represents partial credit.")]),_v(" "),_c('p',[_v("If the code is attributed to a different author by the user via "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("@@author")]),_v(" tag, then the new author will be given\npartial credit.")])]),_v(" "),_c('h3',{attrs:{"id":"assets-a"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--assets")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-a")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#assets-a","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{attrs:{"id":"section-assets"}},[_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--assets ASSETS_DIRECTORY")])]),_v(": Specifies where to place assets for report generation.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ASSETS_DIRECTORY")]),_v(" The directory containing the assets files. A "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("favicon.ico")]),_v(" file can be placed here to customize the favicon of the dashboard, while a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("title.md")]),_v(" file can be placed to customize the "),_c('a',{attrs:{"href":"https://reposense.org/ug/customizingReports.html#add-a-title"}},[_v("title")]),_v(" of the report using "),_c('a',{attrs:{"href":"https://www.markdownguide.org/basic-syntax/"}},[_v("Markdown syntax")]),_v(".")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-a")])]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--assets ./assets")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-a ./assets")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("If "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--assets")]),_v(" is not specified, RepoSense looks for assets in the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./assets")]),_v(" directory.")])])])],1),_v(" "),_c('h3',{attrs:{"id":"config-c"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--config")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-c")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#config-c","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{attrs:{"id":"section-config"}},[_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--config CONFIG_DIRECTORY")])]),_v(": Specifies that config files located in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("CONFIG_DIRECTORY")]),_v(" should be used to customize the report.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("CONFIG_DIRECTORY")]),_v(" The directory containing the config files. Should contain a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(" file. Optionally, can contain an "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(" file or/and a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("group-config.csv")]),_v(" file or/and a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("report-config.json")]),_v(" file or/and a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("blurbs.md")]),_v(" file.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-c")])]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar --config ./config")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("Cannot be used with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repos")]),_v(". The "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repos")]),_v(" flag will take precedence over this flag.")]),_v(" "),_c('li',[_v("If both "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repos")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--config")]),_v(" are not specified, RepoSense looks for config files in the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./config")]),_v(" directory.")]),_v(" "),_c('li',[_v("Config files must follow "),_c('a',{attrs:{"href":"/RepoSense/ug/configFiles.html"}},[_v("this")]),_v(" format.")])])])],1),_v(" "),_c('h3',{attrs:{"id":"formats-f"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--formats")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-f")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#formats-f","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--formats LIST_OF_FORMATS")])]),_v(": Specifies which file extensions to be included in the analysis.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("LIST_OF_FORMATS")]),_v(" A space-separated list of file extensions that should be included in the analysis."),_c('br'),_v("\nDefault: all file formats")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-f")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--formats css fxml gradle")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-f css fxml gradle")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Binary file formats, such as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("jpg")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("png")]),_v(","),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("exe")]),_v(","),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("zip")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("rar")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("docx")]),_v(", and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("pptx")]),_v(", all will be labelled as the file type "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("binary")]),_v(" in the generated report.")])]),_v(" "),_c('h3',{attrs:{"id":"find-previous-authors-f"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--find-previous-authors")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-F")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#find-previous-authors-f","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--find-previous-authors")])]),_v(": Utilizes Git blame's ignore revisions functionality, RepoSense will attempt to blame the line changes caused by commits in the ignore commit list to the previous authors who altered those lines (if available).")]),_v(" "),_c('ul',[_c('li',[_v("Default: RepoSense will assume that no authors are responsible for the code changes in the lines altered by commits in the ignore commit list.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-F")]),_v(" (uppercase F)")]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--find-previous-authors")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-F")])])]),_v(" "),_c('h3',{attrs:{"id":"help-h"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--help")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-h")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#help-h","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--help")])]),_v(": Shows the help message.")]),_v(" "),_c('ul',[_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-h")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Cannot be used with any other flags. This flag takes precedence over all other flags.")])]),_v(" "),_c('h3',{attrs:{"id":"ignore-standalone-config-i"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--ignore-standalone-config")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-i")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#ignore-standalone-config-i","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--ignore-standalone-config")])]),_v(": Specifies that the standalone config file in the repo should be ignored.")]),_v(" "),_c('ul',[_c('li',[_v("Default: the standalone config file is not ignored")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-i")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--ignore-standalone-config")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-i")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("This flag overrides the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Ignore standalone config")]),_v(" field in the CSV config file.")])]),_v(" "),_c('h3',{attrs:{"id":"ignore-filesize-limit-i"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--ignore-filesize-limit")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-I")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#ignore-filesize-limit-i","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--ignore-filesize-limit")])]),_v(": Specifies that the file size limit (both default and user-defined) should be ignored during the analysis.")]),_v(" "),_c('ul',[_c('li',[_v("Default: the file size limit is not ignored")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-I")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--ignore-filesize-limit")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-I")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("All files are subject to a default file size limit or a custom size limit set by the user. Most files should not be\naffected by the default size limit. This flag can be useful for including files in your report that are affected by\nthe size limit. Note that this flag may result in large report sizes and/or slower report generation.")])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("This flag overrides the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Ignore file size limit")]),_v(" field in the CSV config file.")])]),_v(" "),_c('h3',{attrs:{"id":"last-modified-date-l"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--last-modified-date")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-l")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#last-modified-date-l","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--last-modified-date")])]),_v(": Specifies that the last modified date of each line of code should be added to "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("authorship.json")]),_v(".")]),_v(" "),_c('ul',[_c('li',[_v("Default: the last modified date of each line of code will not be added to "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("authorship.json")])]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-l")]),_v(" (lowercase L)")]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--last-modified-date")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-l")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("Cannot be used with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--shallow-cloning")]),_v(". This may result in an incorrect last modified date.")]),_v(" "),_c('li',[_v("The last modified dates will be in the same timezone specified with the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--timezone")]),_v(" flag.")])])]),_v(" "),_c('h3',{attrs:{"id":"originality-threshold-ot"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--originality-threshold")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-ot")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#originality-threshold-ot","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--originality-threshold [VALUE]")])]),_v(": Specifies the cut-off point for partial and full credit\nin "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--analyze-authorship")]),_v(". Author will be given full credit if their contribution exceeds this threshold, else partial\ncredit is given.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("VALUE")]),_v(" Optional. Acceptable range: [0.0, 1.0]."),_c('br'),_v("\nDefault: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("0.51")])]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-ot")])]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--originality-threshold 0.66")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-ot 0.66")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("Requires "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--analyze-authorship")]),_v(" flag.")]),_v(" "),_c('li',[_v("An author's contribution, or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("originality score")]),_v(", is calculated using Levenshtein Distance (Edit Distance) algorithm.\nWe compare the difference between current code line and its previous versions.")])])]),_v(" "),_c('h3',{attrs:{"id":"output-o"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--output")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-o")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#output-o","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--output OUTPUT_DIRECTORY")])]),_v(": Indicates where to save the report generated.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("OUTPUT_DIRECTORY")]),_v(" The location for the generated "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("reposense-report")]),_v(" folder."),_c('br'),_v("\nDefault: current directory")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-o")])]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--output ./foo")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-o ./foo")]),_v(" (the report will be in the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./foo/reposense-report")]),_v(" folder)")])]),_v(" "),_c('h3',{attrs:{"id":"period-p"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--period")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-p")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#period-p","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--period PERIOD")])]),_v(": Specifies the period of analysis window.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("PERIOD")]),_v(" The period of analysis window, in the format "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("nd")]),_v(" (for n days) or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("nw")]),_v(" (for n weeks). It is used to calculate end date if only start date is specified, or calculate end date if only start date is specified.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-p")])]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--period 30d")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--period 4w")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("If both start date and end date are not specified, the date of generating the report will be taken as the end date.")]),_v(" "),_c('li',[_v("May analyze the incorrect date range if used with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since d1")]),_v(". The program will throw a warning.")]),_v(" "),_c('li',[_v("Cannot be used with both "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--until")]),_v(". The program will throw an exception.")])])]),_v(" "),_c('h3',{attrs:{"id":"repo-repos-r"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repo")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repos")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-r")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#repo-repos-r","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repo REPO_LOCATION")])]),_v(": Specifies which repositories to analyze.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("REPO_LOCATION")]),_v(" A list of URLs or the disk location of the git repositories to analyze, separated by spaces.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-r")])]),_v(" "),_c('li',[_v("Examples:\n"),_c('ul',[_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repos https://github.com/reposense/RepoSense.git")])]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repo https://github.com/reposense/RepoSense.git c:/myRepose/foo/bar")]),_v(": analyzes the two specified repos (one remote, one local) and generates one report containing details of both.")])])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Cannot be used with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--config")]),_v(". This flag takes precedence over "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--config")]),_v(".")])]),_v(" "),_c('h3',{attrs:{"id":"shallow-cloning-s"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--shallow-cloning")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-S")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#shallow-cloning-s","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--shallow-cloning")])]),_v(": Clones repositories using Git's shallow cloning functionality, which can significantly reduce the time taken to clone large repositories. However, the flag should not be used for smaller repositories where the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(".git")]),_v(" file is smaller than 500 MB, as it would create overhead.")]),_v(" "),_c('ul',[_c('li',[_v("Default: RepoSense does not clone repositories using Git's shallow cloning functionality.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-S")]),_v(" (uppercase S)")]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--shallow-cloning")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-S")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Cannot be used with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--last-modified-date")]),_v(". This may result in an incorrect last modified date.")])]),_v(" "),_c('h3',{attrs:{"id":"since-s"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-s")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#since-s","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since START_DATE")])]),_v(": Specifies the start date for the period to be analyzed.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("START_DATE")]),_v(" The first day of the period to be analyzed, in the format "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("DD/MM/YYYY")]),_v("."),_c('br'),_v("\nDefault: one month before the current date")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-s")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since 21/10/2017")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-s 21/10/2017")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("If the start date is not specified, only commits made one month before the end date (if specified) or the date of generating the report, will be captured and analyzed.")]),_v(" "),_c('li',[_v("If "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("d1")]),_v(" is specified as the start date ("),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since d1")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-s d1")]),_v("), then the program will search for the earliest commit date of all repositories and use that as the start date.")]),_v(" "),_c('li',[_v("If "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("d1")]),_v(" is specified together with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--period")]),_v(", then the program will warn that the date range being analyzed may be incorrect.")])])]),_v(" "),_c('h3',{attrs:{"id":"timezone-t"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--timezone")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-t")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#timezone-t","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--timezone ZONE_ID")])]),_v(": Indicates the timezone to be used for the analysis.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ZONE_ID")]),_v(" The timezone in the format "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ZONE_ID[±hh[mm]]")]),_v("."),_c('br'),_v("\nDefault: system's default timezone")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-t")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--timezone UTC+08")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-t UTC-1030")])])]),_v(" "),_c('h3',{attrs:{"id":"until-u"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--until")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-u")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#until-u","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--until END_DATE")])]),_v(": Specifies the end date of the analysis period.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("END_DATE")]),_v(" The last date of the period to be analyzed, in the format "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("DD/MM/YYYY")]),_v("."),_c('br'),_v("\nDefault: current date")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-u")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--until 21/10/2017")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-u 21/10/2017")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Note: If the end date is not specified, the date of generating the report will be taken as the end date.")])]),_v(" "),_c('h3',{attrs:{"id":"version-v"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--version")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-V")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#version-v","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--version")])]),_v(": Shows the version of RepoSense.")]),_v(" "),_c('ul',[_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-V")]),_v(" (upper case)")])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Cannot be used with any other flags. This flag takes precedence over all other flags other than "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--help")]),_v(".")])]),_v(" "),_c('h3',{attrs:{"id":"view-v"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--view")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-v")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#view-v","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--view [REPORT_FOLDER]")])]),_v(": Specifies that the report should be opened in the default browser.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("REPORT_FOLDER")]),_v(" Optional. If specified, no analysis will be performed and the report specified by the argument will be opened."),_c('br'),_v("\nDefault: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./reposense-report")])]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-v")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--view")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-v")])])])],1)])],1),_v(" "),_c('p'),_v(" "),_c('h3',{attrs:{"id":"specifying-which-version-of-reposense-to-use"}},[_v("Specifying which version of RepoSense to use"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#specifying-which-version-of-reposense-to-use","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Depending on which version you wish to use for report generation, add one of the following flags to the line "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./get-reposense.py")]),_v(" in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("run.sh")]),_v(" (e.g., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./get-reposense.py --release")]),_v("):")]),_v(" "),_c('ul',[_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--release")]),_v(": Use the latest release (Stable)")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--master")]),_v(": Use the latest version of the master branch")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--tag TAG")]),_v(" (e.g. "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--tag v1.6.1")]),_v("): Use the version identified by the Git tag given")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--commit COMMIT")]),_v(" (e.g. "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--commit abc123")]),_v("): Use the version identified by the Git commit SHA given")])])])])],1),_v(" "),_c('p'),_v(" "),_c('div',{staticClass:"indented-level0"},[_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('span',[_c('span',{staticClass:"glyphicon glyphicon-log-in",attrs:{"aria-hidden":"true"}})]),_v(" Appendix: "),_c('strong',[_v("Config files format")])])]},proxy:true}])},[_v(" "),_c('div',[_c('h1',{staticClass:"display-4",attrs:{"id":"appendix-config-files-format"}},[_c('span',[_v("Appendix: Config files format")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#appendix-config-files-format","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{staticClass:"lead"},[_c('p',[_v("Given below are the details of the various config files used by RepoSense.")])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_c('strong',[_v("RepoSense ignores the order of column headers in the CSV config files. However, the spelling of the column headers must match the specified headers exactly, or the column would be ignored by RepoSense.")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_c('strong',[_v("A value in a config file is optional to provide unless it is specified as "),_c('span',{staticClass:"badge bg-danger"},[_v("mandatory")])]),_v(".")])]),_v(" "),_c('h2',{attrs:{"id":"repo-config-csv"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#repo-config-csv","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(" file contains repo-level config data.")]),_v(" Each row represents a repository's configuration ("),_c('a',{attrs:{"href":"/RepoSense/ug/repo-config.csv"}},[_v("example")]),_v(").")]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Column Name")]),_v(" "),_c('th',[_v("Explanation")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_v("Repository's Location "),_c('span',{staticClass:"badge bg-danger"},[_v("mandatory")])]),_v(" "),_c('td',[_v("The "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Remote Repo URL")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Disk Path")]),_v(" to the git repository e.g., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://github.com/foo/bar.git")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("C:\\Users\\user\\Desktop\\GitHub\\foo\\bar")])])]),_v(" "),_c('tr',[_c('td',[_v("Branch")]),_v(" "),_c('td',[_v("The branch to analyze in the target repository e.g., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("master")]),_v(". Default: the default branch of the repo")])]),_v(" "),_c('tr',[_c('td',[_v("File formats"),_c('sup',[_v("*+")])]),_v(" "),_c('td',[_v("The file extensions to analyze. Binary file formats, such as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("png")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("jpg")]),_v(", will be automatically labelled as the file type "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("binary")]),_v(" in the generated report. Default: all file formats")])]),_v(" "),_c('tr',[_c('td',[_v("Find Previous Authors")]),_v(" "),_c('td',[_v("Enter "),_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("yes")])]),_v(" to utilize Git blame's ignore revisions functionality, RepoSense will attempt to blame the line changes caused by commits in the ignore commit list to the previous authors who altered those lines (if available).")])]),_v(" "),_c('tr',[_c('td',[_v("Ignore Glob List"),_c('sup',[_v("*+")])]),_v(" "),_c('td',[_v("The list of file path globs to ignore during analysis for each author e.g., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("test/**;temp/**")]),_v(". Refer to the "),_c('a',{attrs:{"href":"https://docs.oracle.com/javase/tutorial/essential/io/fileOps.html#glob"}},[_c('em',[_v("glob format")])]),_v(" for the path glob syntax.")])]),_v(" "),_c('tr',[_c('td',[_v("Ignore standalone config")]),_v(" "),_c('td',[_v("To ignore the standalone config file (if any) in target repository, enter "),_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("yes")])]),_v(". If the cell is empty, the standalone config file in the repo (if any) will take precedence over configurations provided in the csv files.")])]),_v(" "),_c('tr',[_c('td',[_v("Ignore Commits List"),_c('sup',[_v("*+")])]),_v(" "),_c('td',[_v("The list of commits to ignore during analysis. For accurate results, the commits should be provided with their full hash. Additionally, a range of commits can be specified using the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("..")]),_v(" notation e.g. "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("abc123..def456")]),_v(" (both inclusive).")])]),_v(" "),_c('tr',[_c('td',[_v("Ignore Authors List"),_c('sup',[_v("*+")])]),_v(" "),_c('td',[_v("The list of authors to ignore during analysis. Authors should be specified by their "),_c('a',{attrs:{"href":"#a-note-about-git-author-name"}},[_v("Git Author Name")]),_v(".")])]),_v(" "),_c('tr',[_c('td',[_v("Shallow Cloning")]),_v(" "),_c('td',[_v("Enter "),_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("yes")])]),_v(" to clone the repository using Git's shallow cloning functionality. This option can significantly reduce the time taken to clone large repositories. However, the option should ideally be disabled for smaller repositories where the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(".git")]),_v(" file is smaller than 500 MB, as it would create overhead.")])]),_v(" "),_c('tr',[_c('td',[_v("File Size Limit"),_c('sup',[_v("+")])]),_v(" "),_c('td',[_v("Enter a file size limit for the repository in bytes as a single number without units (for a size limit of 1MB for example, enter 1000000). This file size limit will override the default file size limit (500KB). Files exceeding the file size limit will be marked as ignored and only the file name and line count will be reflected in the report.")])]),_v(" "),_c('tr',[_c('td',[_v("Ignore File Size Limit")]),_v(" "),_c('td',[_v("Enter "),_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("yes")])]),_v(" to ignore both the default file size limit and the file size limit possibly set by the user in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(".")])]),_v(" "),_c('tr',[_c('td',[_v("Skip Ignored File Analysis")]),_v(" "),_c('td',[_v("Enter "),_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("yes")])]),_v(" to ignore analysis of files exceeding the file size limit entirely. If file analysis is skipped, all information about the file will be omitted from the generated report. This option can significantly improve report generation time.")])])])])]),_c('box',{attrs:{"type":"info","seamless":""}},[_v("\nThe Shallow Cloning option is incompatible with the \"--last-modified-date\" CLI flag.\n")]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_v("\nIf Ignore File Size Limit is yes, the File Size Limit and Skip Ignored File Analysis columns are ignored.\n")]),_v(" "),_c('p',[_c('sup',[_v("* "),_c('strong',[_v("Multi-value column")]),_v(": multiple values can be entered in this column using a semicolon "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(";")]),_v(" as the separator.")]),_c('br'),_v(" "),_c('sup',[_v("+ "),_c('strong',[_v("Overrideable column")]),_v(": prepend with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("override:")]),_v(" to use entered value(s) instead of value(s) from standalone config.")])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("When using "),_c('a',{attrs:{"href":"#config-json-standalone-config-file"}},[_v("standalone config")]),_v(" (if it is not ignored), it is possible to override specific values from the standalone config by prepending the entered value with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("override:")]),_v(".")])]),_v(" "),_c('h2',{attrs:{"id":"author-config-csv"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#author-config-csv","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Optionally, you can use an "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(" (which should be in the same directory as the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(" file) to provide more details about the authors to analyze ("),_c('a',{attrs:{"href":"/RepoSense/ug/author-config.csv"}},[_v("example")]),_v("). It should contain the following columns:")]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Column Name")]),_v(" "),_c('th',[_v("Explanation")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_v("Repository's Location"),_c('sup',[_v("*")])]),_v(" "),_c('td',[_v("Same as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(". Default: all the repos in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(".")])]),_v(" "),_c('tr',[_c('td',[_v("Branch")]),_v(" "),_c('td',[_v("The branch to analyze for this author, e.g., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("master")]),_v(". Default: the author will be bound to all the repos in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(" that has the same repo's location, regardless of branch.")])]),_v(" "),_c('tr',[_c('td',[_v("Author's Git Host ID"),_c('sup',[_v("#")]),_v(" "),_c('span',{staticClass:"badge bg-danger"},[_v("mandatory")])]),_v(" "),_c('td',[_v("Username of the target author's profile on GitHub, GitLab or Bitbucket, e.g."),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("JohnDoe")]),_v(".")])]),_v(" "),_c('tr',[_c('td',[_v("Author's Emails"),_c('sup',[_v("*")])]),_v(" "),_c('td',[_v("Associated emails of the author. For GitHub users, this can be found in your "),_c('a',{attrs:{"href":"https://github.com/settings/emails"}},[_v("GitHub settings")]),_v(".")])]),_v(" "),_c('tr',[_c('td',[_v("Author's Display Name")]),_v(" "),_c('td',[_v("The name to display for the author. Default: author's username.")])]),_v(" "),_c('tr',[_c('td',[_v("Author's Git Author Name"),_c('sup',[_v("*")])]),_v(" "),_c('td',[_v("The meaning of "),_c('em',[_v("Git Author Name")]),_v(" is explained in "),_c('a',{attrs:{"href":"#a-note-about-git-author-name"}},[_c('em',[_v("A note about git author name")])]),_v(".")])]),_v(" "),_c('tr',[_c('td',[_v("Ignore Glob List"),_c('sup',[_v("*")])]),_v(" "),_c('td',[_v("Files to ignore for this author, in addition to files ignored by the patterns specified in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(". The path glob syntax is the same as that of Ignore Glob List in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(".")])])])])]),_c('p',[_c('sup',[_v("* "),_c('strong',[_v("Multi-value column")]),_v(": multiple values can be entered in this column using a semicolon "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(";")]),_v(" as the separator.")]),_v(" "),_c('br'),_v(" "),_c('sup',[_v("# For backward compatibility, "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Author's GitHub ID")]),_v(" is still accepted as the header in place of "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Author's Git Host ID")]),_v(".")])]),_v(" "),_c('p',[_v("If "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(" is not given and the repo has not provided author details in a standalone config file, all the authors of the repositories within the date range specified (if any) will be analyzed.")]),_v(" "),_c('p',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(" has some advanced syntax that can help to reduce duplication of the author's information. The syntax guide is given below:")]),_v(" "),_c('div',{staticClass:"indented-level0"},[_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('span',[_c('span',{staticClass:"glyphicon glyphicon-log-in",attrs:{"aria-hidden":"true"}})]),_v(" Appendix: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(" advanced syntax")])]},proxy:true}])},[_v(" "),_c('div',[_c('h1',{staticClass:"display-4",attrs:{"id":"appendix-author-config-csv-advanced-syntax"}},[_c('span',[_v("Appendix: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(" advanced syntax")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#appendix-author-config-csv-advanced-syntax","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{staticClass:"lead"},[_c('p',[_v("Given below are the advanced syntax available for "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(".")])]),_v(" "),_c('h2',{attrs:{"id":"multiple-repository-s-location-per-author"}},[_v("Multiple "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repository's Location")]),_v(" per author"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#multiple-repository-s-location-per-author","onclick":"event.stopPropagation()"}})]),_v(" "),_c('h4',{attrs:{"id":"specifying-multiple-repository-s-location"}},[_v("Specifying multiple "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repository's Location")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#specifying-multiple-repository-s-location","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("To specify multiple "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repository's Location")]),_v(" in a single row, we can use a semicolon "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(";")]),_v(" as a separator.")]),_v(" "),_c('p',[_v("Below is an example:")]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Repository's Location")]),_v(" "),_c('th',[_v("Branch")]),_v(" "),_c('th',[_v("Author's Git Host ID")]),_v(" "),_c('th',[_v("... Hidden columns")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://github.com/reposense/RepoSense.git;https://github.com/MarkBind/markbind.git")])]),_v(" "),_c('td',[_v("master")]),_v(" "),_c('td',[_v("sikai00")]),_v(" "),_c('td',[_v("--")])])])])]),_c('p',[_v("We have now furnished author details for both repositories in a single row, instead of having two individual rows per "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repository's Location")]),_v(".")]),_v(" "),_c('br'),_v(" "),_c('h4',{attrs:{"id":"specifying-repository-s-location-with-one-or-more-specific-branches"}},[_v("Specifying "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repository's Location")]),_v(" with one or more specific branches"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#specifying-repository-s-location-with-one-or-more-specific-branches","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("To list out one or more branches for a particular "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repository's Location")]),_v(", we can use a pipe "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("|")]),_v(" separator to demarcate the different branches.")]),_v(" "),_c('p',[_v("Below is an example:")]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Repository's Location")]),_v(" "),_c('th',[_v("Branch")]),_v(" "),_c('th',[_v("Author's Git Host ID")]),_v(" "),_c('th',[_v("... Hidden columns")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://github.com/reposense/RepoSense.git~master|release|cypress")])]),_v(" "),_c('td',[_v("master")]),_v(" "),_c('td',[_v("sikai00")]),_v(" "),_c('td',[_v("--")])])])])]),_c('p',[_v("We have now provided author details for three different branches in a single repo, using a single row.")]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("The branch specified through the delimiter syntax will take precedence over the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Branch")]),_v(" column.")])]),_v(" "),_c('h2',{attrs:{"id":"using-github-branch-url-as-repository-s-location"}},[_v("Using GitHub branch URL as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repository's Location")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#using-github-branch-url-as-repository-s-location","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("We can also use GitHub branch URL as copied from the address bar directly, to be able to quickly use the URL to specify the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repository's Location")]),_v(" and a specific "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Branch")]),_v(" at the same time.")]),_v(" "),_c('p',[_v("Below is an example:")]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Repository's Location")]),_v(" "),_c('th',[_v("Branch")]),_v(" "),_c('th',[_v("Author's Git Host ID")]),_v(" "),_c('th',[_v("... Hidden columns")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://github.com/reposense/RepoSense/tree/release")])]),_v(" "),_c('td'),_v(" "),_c('td',[_v("sikai00")]),_v(" "),_c('td',[_v("--")])])])])]),_c('p',[_v("There is no need to specify the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Branch")]),_v(" column now, as we have specified it through the GitHub branch URL.")]),_v(" "),_c('box',{attrs:{"type":"warning","seamless":""}},[_c('p',[_v("GitLab and BitBucket branch URL are not supported at the moment.")])]),_v(" "),_c('h2',{attrs:{"id":"combining-the-advanced-syntax"}},[_v("Combining the advanced syntax"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#combining-the-advanced-syntax","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("It is possible to combine the above-mentioned advanced syntax. By doing so, we can go from:")]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Repository's Location")]),_v(" "),_c('th',[_v("Branch")]),_v(" "),_c('th',[_v("Author's Git Host ID")]),_v(" "),_c('th',[_v("... Hidden columns")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://github.com/MarkBind/markbind/tree/vue3-migration")])]),_v(" "),_c('td'),_v(" "),_c('td',[_v("sikai00")]),_v(" "),_c('td',[_v("--")])]),_v(" "),_c('tr',[_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://github.com/reposense/RepoSense.git")])]),_v(" "),_c('td',[_v("master")]),_v(" "),_c('td',[_v("sikai00")]),_v(" "),_c('td',[_v("--")])]),_v(" "),_c('tr',[_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://github.com/reposense/RepoSense.git")])]),_v(" "),_c('td',[_v("cypress")]),_v(" "),_c('td',[_v("sikai00")]),_v(" "),_c('td',[_v("--")])])])])]),_c('p',[_v("to:")]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Repository's Location")]),_v(" "),_c('th',[_v("Branch")]),_v(" "),_c('th',[_v("Author's Git Host ID")]),_v(" "),_c('th',[_v("... Hidden columns")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://github.com/MarkBind/markbind/tree/vue3-migration;https://github.com/reposense/RepoSense.git~master|cypress")])]),_v(" "),_c('td'),_v(" "),_c('td',[_v("sikai00")]),_v(" "),_c('td',[_v("--")])])])])]),_c('br')],1)])],1),_v(" "),_c('p'),_v(" "),_c('h2',{attrs:{"id":"group-config-csv"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("group-config.csv")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#group-config-csv","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Optionally, you can provide a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("group-config.csv")]),_v("(which should be in the same directory as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(" file) to provide details on any custom groupings for files in specified repositories ("),_c('a',{attrs:{"href":"/RepoSense/ug/group-config.csv"}},[_v("example")]),_v("). It should contain the following columns:")]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Column Name")]),_v(" "),_c('th',[_v("Explanation")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_v("Repository's Location")]),_v(" "),_c('td',[_v("Same as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(". Default: all the repos in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")])])]),_v(" "),_c('tr',[_c('td',[_v("Group Name "),_c('span',{staticClass:"badge bg-danger"},[_v("mandatory")])]),_v(" "),_c('td',[_v("Name of the group, e.g.,"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("test")]),_v(".")])]),_v(" "),_c('tr',[_c('td',[_v("Globs * "),_c('span',{staticClass:"badge bg-danger"},[_v("mandatory")])]),_v(" "),_c('td',[_v("The list of file path globs to include for specified group, e.g.,"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("**/test/*;**.java")]),_v(".")])])])])]),_c('p',[_c('sup',[_v("* "),_c('strong',[_v("Multi-value column")]),_v(": multiple values can be entered in this column using a semicolon "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(";")]),_v(" as the separator.")])]),_v(" "),_c('p',[_v("Note that a file in a given repository should only be tagged to one group. "),_c('br'),_v("\ne.g.: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("example.java")]),_v(" in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("example-repo")]),_v(" can either be in the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("test")]),_v(" group or the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("code")]),_v(" group, but not in both "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("test")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("code")]),_v(" group. If multiple groups are specified for a given file, the latter group (i.e., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("code")]),_v(" group) is set for the file.")]),_v(" "),_c('h2',{attrs:{"id":"report-config-json"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("report-config.json")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#report-config-json","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("You can optionally use "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("report-config.json")]),_v(" to customize report generation by providing the following information. ("),_c('a',{attrs:{"href":"/RepoSense/ug/report-config.json"}},[_v("example")]),_v(")")]),_v(" "),_c('p',[_c('strong',[_v("Fields to provide")]),_v(":")]),_v(" "),_c('ul',[_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("title")]),_v(": Title of the generated report, which is also the title of the deployed dashboard. Default: \"RepoSense Report\"")])]),_v(" "),_c('div',{attrs:{"id":"section-standalone"}},[_c('h2',{attrs:{"id":"config-json-standalone-config-file"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("config.json")]),_v(" (standalone config file)"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#config-json-standalone-config-file","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Repo owners can provide the following additional information to RepoSense using a config file that we call the "),_c('strong',[_c('em',[_v("standalone config file")])]),_v(":")]),_v(" "),_c('ul',[_c('li',[_v("which files/authors/commits to analyze/omit")]),_v(" "),_c('li',[_v("which git and git host usernames belong to which authors")]),_v(" "),_c('li',[_v("the display of an author")])]),_v(" "),_c('p',[_v("To use this feature, add a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("_reposense/config.json")]),_v(" to the root of your repo using the format in the example below ("),_c('a',{attrs:{"href":"https://github.com/reposense/RepoSense/blob/master/_reposense/config.json"}},[_v("another example")]),_v(") and "),_c('strong',[_v("commit it")]),_v(" (reason: RepoSense can see committed code only):")]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"no-line-numbers hljs json"}},[_c('span',[_v("{\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"ignoreGlobList\"")]),_v(": ["),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"about-us/**\"")]),_v(", "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"**index.html\"")]),_v("],\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"formats\"")]),_v(": ["),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"html\"")]),_v(", "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"css\"")]),_v("],\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"ignoreCommitList\"")]),_v(": ["),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"90018e49f129ce7e0abdc8b18e91c9813588c601\"")]),_v(", "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"67890def\"")]),_v(", "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"abc123..def456\"")]),_v("],\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"ignoreAuthorList\"")]),_v(": ["),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"charlie\"")]),_v("],\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"authors\"")]),_v(":\n")]),_c('span',[_v(" [\n")]),_c('span',[_v(" {\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"gitId\"")]),_v(": "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"alice\"")]),_v(",\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"emails\"")]),_v(": ["),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"alice@example.com\"")]),_v(", "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"alicet@example.com\"")]),_v("],\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"displayName\"")]),_v(": "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"Alice T.\"")]),_v(",\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"authorNames\"")]),_v(": ["),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"AT\"")]),_v(", "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"A\"")]),_v("],\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"ignoreGlobList\"")]),_v(": ["),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"**.css\"")]),_v("]\n")]),_c('span',[_v(" },\n")]),_c('span',[_v(" {\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"gitId\"")]),_v(": "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"bob\"")]),_v("\n")]),_c('span',[_v(" }\n")]),_c('span',[_v(" ]\n")]),_c('span',[_v("}\n")])])]),_c('p',[_v("Note: all fields are optional unless specified otherwise.")]),_v(" "),_c('p',[_c('strong',[_v("Fields to provide "),_c('em',[_v("repository-level")]),_v(" info")]),_v(":")]),_v(" "),_c('ul',[_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ignoreGlobList")]),_v(": Folders/files to ignore, specified using the "),_c('a',{attrs:{"href":"https://docs.oracle.com/javase/tutorial/essential/io/fileOps.html#glob"}},[_c('em',[_v("glob format")])]),_v(".")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("formats")]),_v(": File formats to analyze. Binary file formats, such as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("png")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("jpg")]),_v(", will be automatically labelled as the file type "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("binary")]),_v(" in the generated report. Default: all file formats")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ignoreCommitList")]),_v(": The list of commits to ignore during analysis. For accurate results, the commits should be provided with their full hash. Additionally, a range of commits can be specified using the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("..")]),_v(" notation e.g. "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("abc123..def456")]),_v(" (both inclusive).")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ignoreAuthorList")]),_v(": The list of authors to ignore during analysis. Authors specified in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("authors")]),_v(" field or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(" will be also be omitted if they are in this list. Authors should be specified by their "),_c('a',{attrs:{"href":"#a-note-about-git-author-name"}},[_v("Git Author Name")]),_v(".")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("fileSizeLimit")]),_v(": A file size limit for the repository in bytes as a single number without units, that will override the default file size limit. If not specified, the default file size limit will continue to be used.")])]),_v(" "),_c('p',[_c('strong',[_v("Fields to provide "),_c('em',[_v("author-level")]),_v(" info")]),_v(":"),_c('br'),_v("\nNote: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("authors")]),_v(" field should contain "),_c('em',[_v("all")]),_v(" authors that should be captured in the analysis.")]),_v(" "),_c('ul',[_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("gitId")]),_v(": Username of the author. "),_c('span',{staticClass:"badge bg-danger"},[_v("mandatory")]),_v(" field.")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("emails")]),_v(": Associated git emails of the author. For GitHub, this can be found in your "),_c('a',{attrs:{"href":"https://github.com/settings/emails"}},[_v("GitHub settings")]),_v(".")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("displayName")]),_v(": Name to display on the report for this author.")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("authorNames")]),_v(": Git Author Name(s) used in the author's commits. By default, RepoSense assumes an author would use their remote Git Host username as the Git username too. The meaning of "),_c('em',[_v("Git Author Name")]),_v(" is explained in "),_c('a',{attrs:{"href":"#a-note-about-git-author-name"}},[_c('em',[_v("A note about git author name")])]),_v(".")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ignoreGlobList")]),_v(": "),_c('em',[_v("Additional")]),_v(" (i.e. on top of the repo-level "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ignoreGlobList")]),_v(") folders/files to ignore for a specific author. The path glob syntax is specified by the "),_c('a',{attrs:{"href":"https://docs.oracle.com/javase/tutorial/essential/io/fileOps.html#glob"}},[_c('em',[_v("glob format")])]),_v(". In the example above, the actual "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ignoreGlobList")]),_v(" for "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("alice")]),_v(" would be "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("[\"about-us/**\", \"**index.html\", \"**.css\"]")]),_v(".")])]),_v(" "),_c('p',[_v("To verify your standalone configuration is as intended, add the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("_reposense/config.json")]),_v(" to your local copy of repo and run RepoSense against it as follows:"),_c('br')]),_v(" "),_c('ul',[_c('li',[_v("Format: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar --repo LOCAL_REPO_LOCATION")]),_v(" "),_c('br')]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar --repo c:/myRepose/foo/bar")]),_c('br'),_v("\nAfter that, view the report to see if the configuration you specified in the config file is being reflected correctly in the report.")])]),_v(" "),_c('h2',{attrs:{"id":"a-note-about-git-author-name"}},[_v("A note about git author name"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#a-note-about-git-author-name","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Git Author Name")]),_v(" refers to the customizable author's display name set in the local "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(".gitconfig")]),_v(" file. For example, in the Git Log's display:")]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"no-line-numbers hljs"}},[_c('span',[_v("...\n")]),_c('span',[_v("commit cd7f610e0becbdf331d5231887d8010a689f87c7\n")]),_c('span',[_v("Author: ConfiguredAuthorName \n")]),_c('span',[_v("Date: Fri Feb 9 19:14:41 2018 +0800\n")]),_c('span',[_v("\n")]),_c('span',[_v(" Make some changes to show my new author's name\n")]),_c('span',[_v("\n")]),_c('span',[_v("commit e3f699fd4ef128eebce98d5b4e5b3bb06a512f49\n")]),_c('span',[_v("Author: ActualGitHostId \n")]),_c('span',[_v("Date: Fri Feb 9 19:13:13 2018 +0800\n")]),_c('span',[_v("\n")]),_c('span',[_v(" Initial commit\n")]),_c('span',[_v(" ...\n")])])]),_c('p',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ActualGitHostId")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ConfiguredAuthorName")]),_v(" are both "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Git Author Name")]),_v(" of the same author."),_c('br'),_v("\nTo find the author name that you are currently using for your current git repository, run the following command within your git repository:")]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"no-line-numbers hljs"}},[_c('span',[_v("git config user.name\n")])])]),_c('p',[_v("To set the author name to the value you want (e.g., to set it to your GitHub username) for your current git repository, you can use the following command ("),_c('a',{attrs:{"href":"https://www.git-tower.com/learn/git/faq/change-author-name-email"}},[_v("more info")]),_v("):")]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"no-line-numbers hljs"}},[_c('span',[_v("git config user.name \"YOUR_AUTHOR_NAME”\n")])])]),_c('p',[_v("To set the author name to use a default value you want for future git repositories, you can use the following command:")]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"no-line-numbers hljs"}},[_c('span',[_v("git config --global user.name \"YOUR_AUTHOR_NAME”\n")])])]),_c('p',[_v("RepoSense expects the Git Author Name to be the same as author's username on the Git hosting platform (GitHub, GitLab, BitBucket). If an author's "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Git Author Name")]),_v(" is different from their username on the Git hosting platform, the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Git Author Name")]),_v(" needs to be specified in the standalone config file. If the author has more than one "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Git Author Name")]),_v(", multiple values can be entered too.")]),_v(" "),_c('box',{attrs:{"type":"warning","seamless":""}},[_c('p',[_v("Note: Symbols such as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("\"")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("!")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("/")]),_v(" etc. in your author name will be omitted, which may reduce the accuracy of the analysis if 2 names in the repository are approximately similar.")])])],1),_v(" "),_c('div',{attrs:{"id":"section-blurbs"}},[_c('h2',{attrs:{"id":"blurbs-md"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("blurbs.md")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#blurbs-md","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("You can optionally use "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("blurbs.md")]),_v(" to add blurbs in Markdown syntax for repository branches. These blurbs will be seen when grouping by "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repo/Branch")]),_v(". ("),_c('a',{attrs:{"href":"https://github.com/reposense/RepoSense/blob/master/docs/ug/blurbs.md"}},[_v("example")]),_v(")")]),_v(" "),_c('p',[_c('strong',[_v("Format")]),_v(":")]),_v(" "),_c('ul',[_c('li',[_v("First line in section: Link to the repository branch.")]),_v(" "),_c('li',[_v("Second line onwards: Blurb content.")]),_v(" "),_c('li',[_v("Delimiter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("")]),_v(". Everything on the line after the delimiter will be ignored.")])])])],1)])],1),_v(" "),_c('p')]),_v(" "),_c('p',[_c('span',{staticClass:"badge bg-dark bigger-level0"},[_v("Step 4")]),_v(" "),_c('strong',[_v("View the generated report:")])]),_v(" "),_c('p',[_v("To access your regenerated RepoSense report, go to the settings of your fork in GitHub, under "),_c('strong',[_v("GitHub Pages")]),_v(" section, look for "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Your site is published at [LINK]")]),_v(". It should look something like "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://[YOUR_GITHUB_ID].github.io/publish-RepoSense")]),_v(".\n"),_c('a',{attrs:{"href":"/RepoSense/images/publishingguide-githubsetting.jpg","target":"_self"}},[_c('img',{staticClass:"img-fluid",attrs:{"src":"/RepoSense/images/publishingguide-githubsetting.jpg","alt":"GitHub Setting","title":"GitHub Setting"}})])]),_v(" "),_c('box',{attrs:{"type":"tip","seamless":""}},[_c('p',[_v("There is also a published GitHub Action ("),_c('a',{attrs:{"href":"https://github.com/marketplace/actions/reposense-action"}},[_v("reposense-action")]),_v(") that can be used to generate and publish RepoSense reports. It is especially convenient for users who wish to skip the forking and setting up of a separate repository. For more information, refer to the "),_c('a',{attrs:{"href":"https://github.com/marketplace/actions/reposense-action#usage"}},[_v("usage description")]),_v(".")])])],1)])],1),_v(" "),_c('p'),_v(" "),_c('div',{staticClass:"indented-level0"},[_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('span',[_c('span',{staticClass:"glyphicon glyphicon-log-in",attrs:{"aria-hidden":"true"}})]),_v(" Appendix: "),_c('strong',[_v("Using RepoSense with Travis → Setting up")])])]},proxy:true}])},[_v(" "),_c('div',[_c('div',{staticClass:"lead"},[_c('p',[_v("You can use the CI tool Travis to automate generating and publishing of RepoSense reports.")])]),_v(" "),_c('h2',{attrs:{"id":"setting-up-3"}},[_v("Setting up"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#setting-up-3","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{attrs:{"id":"section-fork-token"}},[_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("The instructions below assume you are using GitHub pages to host your report.")])]),_v(" "),_c('p',[_c('span',{staticClass:"badge bg-dark bigger-level0"},[_v("Step 1")]),_v(" "),_c('strong',[_v("Fork the "),_c('em',[_v("publish-RepoSense")]),_v(" repository")]),_v(" using this "),_c('a',{attrs:{"href":"https://github.com/RepoSense/publish-RepoSense/fork"}},[_v("link")]),_v(". Optionally, you can rename the fork to match your RepoSense report e.g., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("project-code-dashboard")]),_v(".")])],1),_v(" "),_c('p',[_c('span',{staticClass:"badge bg-dark bigger-level0"},[_v("Step 2")]),_v(" "),_c('strong',[_v("Generate a "),_c('em',[_v("personal access token")]),_v(" or "),_c('em',[_v("deploy key")]),_v(" on GitHub")]),_v(" as explained in the panel below.")]),_v(" "),_c('div',{staticClass:"indented-level0"},[_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('span',[_c('span',{staticClass:"glyphicon glyphicon-log-in",attrs:{"aria-hidden":"true"}})]),_v(" Granting write access on GitHub")])]},proxy:true}])},[_v(" "),_c('div',[_c('h2',{attrs:{"id":"granting-write-access-to-a-repository"}},[_v("Granting write-access to a repository"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#granting-write-access-to-a-repository","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("We recommend using a "),_c('a',{attrs:{"href":"https://github.blog/2013-05-16-personal-api-tokens/"}},[_v("personal access token")]),_v(" if aiming for the ease of setup and "),_c('a',{attrs:{"href":"https://developer.github.com/v3/guides/managing-deploy-keys/#deploy-keys"}},[_v("deploy key")]),_v(" if aiming for enhanced security.")]),_v(" "),_c('h3',{attrs:{"id":"if-you-wish-to-use-personal-access-token"}},[_v("If you wish to use "),_c('em',[_v("personal access token")]),_v(":"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#if-you-wish-to-use-personal-access-token","onclick":"event.stopPropagation()"}})]),_v(" "),_c('ol',[_c('li',[_c('strong',[_v("Create a "),_c('em',[_v("personal access token")])]),_v(" by following this "),_c('a',{attrs:{"href":"https://help.github.com/articles/creating-a-personal-access-token-for-the-command-line/"}},[_v("guide")]),_v(" and give only "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("public_repo")]),_v(" permission.")]),_v(" "),_c('li',[_c('strong',[_v("Copy the token")]),_v(" for later use.")])]),_v(" "),_c('h3',{attrs:{"id":"if-you-wish-to-use-deploy-key"}},[_v("If you wish to use "),_c('em',[_v("deploy key")]),_v(":"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#if-you-wish-to-use-deploy-key","onclick":"event.stopPropagation()"}})]),_v(" "),_c('box',{attrs:{"type":"info"},scopedSlots:_u([{key:"icon",fn:function(){return [_c('span',{staticClass:"fab fa-windows",attrs:{"aria-hidden":"true"}})]},proxy:true}])},[_v(" "),_c('p',[_v("[Windows users] "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ssh-keygen")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("base64")]),_v(" are accessible using "),_c('a',{attrs:{"href":"https://gitforwindows.org/"}},[_v("Git Bash")]),_v(".")])]),_v(" "),_c('ol',[_c('li',[_c('strong',[_v("Create a public-private key pair")]),_v(" (without a passphrase) using the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ssh-keygen")]),_v(". "),_c('br'),_v("\ni.e., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ssh-keygen -t ecdsa -b 521 -f id_reposense -q -N \"\"")])]),_v(" "),_c('li',[_c('strong',[_v("Create a deploy key")]),_v(" as follows:\n"),_c('ol',[_c('li',[_v("Go to the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("settings")]),_v(" page of your publish-RepoSense fork")]),_v(" "),_c('li',[_v("Click on the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Deploy keys")]),_v(" item in the navigation menu in that page")]),_v(" "),_c('li',[_v("Click on the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Add deploy key")]),_v(" button and create a new deploy key with the contents of "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("id_reposense.pub")]),_v(".")])])]),_v(" "),_c('li',[_c('strong',[_v("Copy the private key")]),_v(" in base64 encoded format for later use. "),_c('br'),_v("\ni.e., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("cat id_reposense | base64 -w 0")])])])],1)])],1),_v(" "),_c('p'),_v(" "),_c('p',[_c('span',{staticClass:"badge bg-dark bigger-level0"},[_v("Step 3")]),_v(" "),_c('strong',[_v("Login to "),_c('a',{attrs:{"href":"https://travis-ci.org/"}},[_v("Travis-CI")]),_v(".")]),_v(" You may have to sign up first.")]),_v(" "),_c('p',[_c('span',{staticClass:"badge bg-dark bigger-level0"},[_v("Step 4")]),_v(" "),_c('strong',[_v("Sync your Travis account with GitHub:")])]),_v(" "),_c('ol',[_c('li',[_v("Go to "),_c('a',{attrs:{"href":"https://travis-ci.org/account/repositories"}},[_v("your account")]),_v(".")]),_v(" "),_c('li',[_v("Click on "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Sync account")]),_v(" to fetch all your repositories into Travis-CI.")])]),_v(" "),_c('p',[_c('span',{staticClass:"badge bg-dark bigger-level0"},[_v("Step 5")]),_v(" "),_c('strong',[_v("Activate the repository:")])]),_v(" "),_c('ol',[_c('li',[_v("Go to your "),_c('a',{attrs:{"href":"https://travis-ci.org/search/publish-RepoSense/"}},[_v("publish-RepoSense fork in Travis-CI")])]),_v(" "),_c('li',[_v("Under "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Current")]),_v(" tab, click on "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Activate repository")]),_v(".")])]),_v(" "),_c('p',[_c('span',{staticClass:"badge bg-dark bigger-level0"},[_v("Step 6")]),_v(" "),_c('strong',[_v("Set the token/key:")])]),_v(" "),_c('ol',[_c('li',[_v("In the same page, click on "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("More options")]),_v(" on the right.")]),_v(" "),_c('li',[_v("Then, click on the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Settings")]),_v(" option:"),_c('br'),_v(" "),_c('a',{attrs:{"href":"/RepoSense/images/publishingguide-travissetting.jpg","target":"_self"}},[_c('img',{staticClass:"img-fluid",attrs:{"src":"/RepoSense/images/publishingguide-travissetting.jpg","alt":"Travis-CI Dashboard","title":"Travis-CI Dashboard"}})])]),_v(" "),_c('li',[_v("Under "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Environment Variables")]),_v(", name a variable as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("GITHUB_TOKEN")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("GITHUB_DEPLOY_KEY")]),_v(" depending on your earlier choice and paste the token/key into its value field; then click "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Add")]),_v(".")]),_v(" "),_c('li',[_v("Ensure that the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Display value in build log")]),_v(" is "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("switched off")]),_v(" for security reasons:"),_c('br'),_v(" "),_c('a',{attrs:{"href":"/RepoSense/images/publishingguide-githubtoken.jpg","target":"_self"}},[_c('img',{staticClass:"img-fluid",attrs:{"src":"/RepoSense/images/publishingguide-githubtoken.jpg","alt":"Travis-CI Environment Variable","title":"Travis-CI Environment Variable"}})])])]),_v(" "),_c('p',[_c('span',{staticClass:"badge bg-dark bigger-level0"},[_v("Step 7")]),_v(" "),_c('strong',[_v("Update the report configuration:")])]),_v(" "),_c('span',{attrs:{"id":"section-edit-configs"}},[_c('p',[_v("In your fork, edit "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("run.sh")]),_v(" (and if applicable, "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("group-config.csv")]),_v(") to customize the command line parameters or repositories to be analyzed.")]),_v(" "),_c('div',{staticClass:"indented-level0"},[_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('span',[_c('span',{staticClass:"glyphicon glyphicon-log-in",attrs:{"aria-hidden":"true"}})]),_v(" Appendix: "),_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("run.sh")]),_v(" format")])])]},proxy:true}])},[_v(" "),_c('div',[_c('h1',{staticClass:"display-4",attrs:{"id":"appendix-run-sh-format-2"}},[_c('span',[_v("Appendix: run.sh format")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#appendix-run-sh-format-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{staticClass:"lead"},[_c('p',[_c('a',{attrs:{"href":"https://github.com/reposense/publish-RepoSense/blob/master/run.sh"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("run.sh")])]),_v(" is a script used for automating RepoSense report generation.")])]),_v(" "),_c('h3',{attrs:{"id":"customizing-the-reposense-command-2"}},[_v("Customizing the RepoSense command"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#customizing-the-reposense-command-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("You can update the RepoSense command (i.e., the last line) in the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("run.sh")]),_v(" to match your needs.")]),_v(" "),_c('div',{staticClass:"indented-level0"},[_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('span',[_c('span',{staticClass:"glyphicon glyphicon-log-in",attrs:{"aria-hidden":"true"}})]),_v(" Appendix: "),_c('strong',[_v("CLI syntax reference")])])]},proxy:true}])},[_v(" "),_c('div',[_c('h1',{staticClass:"display-4",attrs:{"id":"appendix-cli-syntax-reference-2"}},[_c('span',[_v("Appendix: CLI syntax reference")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#appendix-cli-syntax-reference-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{staticClass:"lead"},[_c('p',[_v("The command "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar")]),_v(" takes several flags.")])]),_v(" "),_c('box',[_c('p',[_c('strong',[_v("Examples")]),_v(":")]),_v(" "),_c('p',[_v("An example of a command using most parameters:"),_c('br'),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar --repos https://github.com/reposense/RepoSense.git --output ./report_folder --since 31/1/2017 --until 31/12/2018 --formats java adoc xml --view --ignore-standalone-config --last-modified-date --timezone UTC+08 --find-previous-authors --analyze-authorship --originality-threshold 0.66")])]),_v(" "),_c('p',[_v("Same command as above but using most parameters in alias format:"),_c('br'),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar -r https://github.com/reposense/RepoSense.git -o ./report_folder -s 31/1/2017 -u 31/12/2018 -f java adoc xml -v -i -l -t UTC+08 -F -A -ot 0.66")])])]),_v(" "),_c('p',[_v("The section below provides explanations for each of the flags.")]),_v(" "),_c('h3',{attrs:{"id":"analyze-authorship-a-2"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--analyze-authorship")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-A")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#analyze-authorship-a-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--analyze-authorship")])]),_v(": Performs further analysis to distinguish between partial and full credit attribution for\nlines of code assigned to the author.")]),_v(" "),_c('ul',[_c('li',[_v("Default: this feature is turned "),_c('em',[_c('strong',[_v("off")])]),_v(" by default and the author will receive partial credits for all lines of\ncode, as the code lines are at least partial credit but may not qualify for full credit.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-A")]),_v(" (upper case)")]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--analyze-authorship")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-A")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("A darker background colour represents full credit, while a lighter background colour represents partial credit.")]),_v(" "),_c('p',[_v("If the code is attributed to a different author by the user via "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("@@author")]),_v(" tag, then the new author will be given\npartial credit.")])]),_v(" "),_c('h3',{attrs:{"id":"assets-a-2"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--assets")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-a")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#assets-a-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{attrs:{"id":"section-assets"}},[_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--assets ASSETS_DIRECTORY")])]),_v(": Specifies where to place assets for report generation.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ASSETS_DIRECTORY")]),_v(" The directory containing the assets files. A "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("favicon.ico")]),_v(" file can be placed here to customize the favicon of the dashboard, while a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("title.md")]),_v(" file can be placed to customize the "),_c('a',{attrs:{"href":"https://reposense.org/ug/customizingReports.html#add-a-title"}},[_v("title")]),_v(" of the report using "),_c('a',{attrs:{"href":"https://www.markdownguide.org/basic-syntax/"}},[_v("Markdown syntax")]),_v(".")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-a")])]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--assets ./assets")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-a ./assets")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("If "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--assets")]),_v(" is not specified, RepoSense looks for assets in the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./assets")]),_v(" directory.")])])])],1),_v(" "),_c('h3',{attrs:{"id":"config-c-2"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--config")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-c")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#config-c-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{attrs:{"id":"section-config"}},[_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--config CONFIG_DIRECTORY")])]),_v(": Specifies that config files located in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("CONFIG_DIRECTORY")]),_v(" should be used to customize the report.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("CONFIG_DIRECTORY")]),_v(" The directory containing the config files. Should contain a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(" file. Optionally, can contain an "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(" file or/and a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("group-config.csv")]),_v(" file or/and a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("report-config.json")]),_v(" file or/and a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("blurbs.md")]),_v(" file.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-c")])]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar --config ./config")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("Cannot be used with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repos")]),_v(". The "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repos")]),_v(" flag will take precedence over this flag.")]),_v(" "),_c('li',[_v("If both "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repos")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--config")]),_v(" are not specified, RepoSense looks for config files in the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./config")]),_v(" directory.")]),_v(" "),_c('li',[_v("Config files must follow "),_c('a',{attrs:{"href":"/RepoSense/ug/configFiles.html"}},[_v("this")]),_v(" format.")])])])],1),_v(" "),_c('h3',{attrs:{"id":"formats-f-2"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--formats")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-f")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#formats-f-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--formats LIST_OF_FORMATS")])]),_v(": Specifies which file extensions to be included in the analysis.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("LIST_OF_FORMATS")]),_v(" A space-separated list of file extensions that should be included in the analysis."),_c('br'),_v("\nDefault: all file formats")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-f")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--formats css fxml gradle")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-f css fxml gradle")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Binary file formats, such as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("jpg")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("png")]),_v(","),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("exe")]),_v(","),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("zip")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("rar")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("docx")]),_v(", and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("pptx")]),_v(", all will be labelled as the file type "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("binary")]),_v(" in the generated report.")])]),_v(" "),_c('h3',{attrs:{"id":"find-previous-authors-f-2"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--find-previous-authors")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-F")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#find-previous-authors-f-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--find-previous-authors")])]),_v(": Utilizes Git blame's ignore revisions functionality, RepoSense will attempt to blame the line changes caused by commits in the ignore commit list to the previous authors who altered those lines (if available).")]),_v(" "),_c('ul',[_c('li',[_v("Default: RepoSense will assume that no authors are responsible for the code changes in the lines altered by commits in the ignore commit list.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-F")]),_v(" (uppercase F)")]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--find-previous-authors")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-F")])])]),_v(" "),_c('h3',{attrs:{"id":"help-h-2"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--help")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-h")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#help-h-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--help")])]),_v(": Shows the help message.")]),_v(" "),_c('ul',[_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-h")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Cannot be used with any other flags. This flag takes precedence over all other flags.")])]),_v(" "),_c('h3',{attrs:{"id":"ignore-standalone-config-i-2"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--ignore-standalone-config")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-i")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#ignore-standalone-config-i-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--ignore-standalone-config")])]),_v(": Specifies that the standalone config file in the repo should be ignored.")]),_v(" "),_c('ul',[_c('li',[_v("Default: the standalone config file is not ignored")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-i")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--ignore-standalone-config")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-i")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("This flag overrides the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Ignore standalone config")]),_v(" field in the CSV config file.")])]),_v(" "),_c('h3',{attrs:{"id":"ignore-filesize-limit-i-2"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--ignore-filesize-limit")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-I")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#ignore-filesize-limit-i-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--ignore-filesize-limit")])]),_v(": Specifies that the file size limit (both default and user-defined) should be ignored during the analysis.")]),_v(" "),_c('ul',[_c('li',[_v("Default: the file size limit is not ignored")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-I")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--ignore-filesize-limit")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-I")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("All files are subject to a default file size limit or a custom size limit set by the user. Most files should not be\naffected by the default size limit. This flag can be useful for including files in your report that are affected by\nthe size limit. Note that this flag may result in large report sizes and/or slower report generation.")])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("This flag overrides the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Ignore file size limit")]),_v(" field in the CSV config file.")])]),_v(" "),_c('h3',{attrs:{"id":"last-modified-date-l-2"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--last-modified-date")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-l")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#last-modified-date-l-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--last-modified-date")])]),_v(": Specifies that the last modified date of each line of code should be added to "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("authorship.json")]),_v(".")]),_v(" "),_c('ul',[_c('li',[_v("Default: the last modified date of each line of code will not be added to "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("authorship.json")])]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-l")]),_v(" (lowercase L)")]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--last-modified-date")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-l")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("Cannot be used with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--shallow-cloning")]),_v(". This may result in an incorrect last modified date.")]),_v(" "),_c('li',[_v("The last modified dates will be in the same timezone specified with the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--timezone")]),_v(" flag.")])])]),_v(" "),_c('h3',{attrs:{"id":"originality-threshold-ot-2"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--originality-threshold")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-ot")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#originality-threshold-ot-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--originality-threshold [VALUE]")])]),_v(": Specifies the cut-off point for partial and full credit\nin "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--analyze-authorship")]),_v(". Author will be given full credit if their contribution exceeds this threshold, else partial\ncredit is given.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("VALUE")]),_v(" Optional. Acceptable range: [0.0, 1.0]."),_c('br'),_v("\nDefault: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("0.51")])]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-ot")])]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--originality-threshold 0.66")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-ot 0.66")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("Requires "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--analyze-authorship")]),_v(" flag.")]),_v(" "),_c('li',[_v("An author's contribution, or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("originality score")]),_v(", is calculated using Levenshtein Distance (Edit Distance) algorithm.\nWe compare the difference between current code line and its previous versions.")])])]),_v(" "),_c('h3',{attrs:{"id":"output-o-2"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--output")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-o")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#output-o-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--output OUTPUT_DIRECTORY")])]),_v(": Indicates where to save the report generated.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("OUTPUT_DIRECTORY")]),_v(" The location for the generated "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("reposense-report")]),_v(" folder."),_c('br'),_v("\nDefault: current directory")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-o")])]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--output ./foo")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-o ./foo")]),_v(" (the report will be in the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./foo/reposense-report")]),_v(" folder)")])]),_v(" "),_c('h3',{attrs:{"id":"period-p-2"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--period")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-p")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#period-p-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--period PERIOD")])]),_v(": Specifies the period of analysis window.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("PERIOD")]),_v(" The period of analysis window, in the format "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("nd")]),_v(" (for n days) or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("nw")]),_v(" (for n weeks). It is used to calculate end date if only start date is specified, or calculate end date if only start date is specified.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-p")])]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--period 30d")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--period 4w")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("If both start date and end date are not specified, the date of generating the report will be taken as the end date.")]),_v(" "),_c('li',[_v("May analyze the incorrect date range if used with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since d1")]),_v(". The program will throw a warning.")]),_v(" "),_c('li',[_v("Cannot be used with both "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--until")]),_v(". The program will throw an exception.")])])]),_v(" "),_c('h3',{attrs:{"id":"repo-repos-r-2"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repo")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repos")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-r")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#repo-repos-r-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repo REPO_LOCATION")])]),_v(": Specifies which repositories to analyze.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("REPO_LOCATION")]),_v(" A list of URLs or the disk location of the git repositories to analyze, separated by spaces.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-r")])]),_v(" "),_c('li',[_v("Examples:\n"),_c('ul',[_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repos https://github.com/reposense/RepoSense.git")])]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repo https://github.com/reposense/RepoSense.git c:/myRepose/foo/bar")]),_v(": analyzes the two specified repos (one remote, one local) and generates one report containing details of both.")])])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Cannot be used with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--config")]),_v(". This flag takes precedence over "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--config")]),_v(".")])]),_v(" "),_c('h3',{attrs:{"id":"shallow-cloning-s-2"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--shallow-cloning")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-S")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#shallow-cloning-s-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--shallow-cloning")])]),_v(": Clones repositories using Git's shallow cloning functionality, which can significantly reduce the time taken to clone large repositories. However, the flag should not be used for smaller repositories where the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(".git")]),_v(" file is smaller than 500 MB, as it would create overhead.")]),_v(" "),_c('ul',[_c('li',[_v("Default: RepoSense does not clone repositories using Git's shallow cloning functionality.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-S")]),_v(" (uppercase S)")]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--shallow-cloning")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-S")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Cannot be used with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--last-modified-date")]),_v(". This may result in an incorrect last modified date.")])]),_v(" "),_c('h3',{attrs:{"id":"since-s-2"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-s")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#since-s-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since START_DATE")])]),_v(": Specifies the start date for the period to be analyzed.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("START_DATE")]),_v(" The first day of the period to be analyzed, in the format "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("DD/MM/YYYY")]),_v("."),_c('br'),_v("\nDefault: one month before the current date")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-s")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since 21/10/2017")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-s 21/10/2017")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("If the start date is not specified, only commits made one month before the end date (if specified) or the date of generating the report, will be captured and analyzed.")]),_v(" "),_c('li',[_v("If "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("d1")]),_v(" is specified as the start date ("),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since d1")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-s d1")]),_v("), then the program will search for the earliest commit date of all repositories and use that as the start date.")]),_v(" "),_c('li',[_v("If "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("d1")]),_v(" is specified together with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--period")]),_v(", then the program will warn that the date range being analyzed may be incorrect.")])])]),_v(" "),_c('h3',{attrs:{"id":"timezone-t-2"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--timezone")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-t")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#timezone-t-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--timezone ZONE_ID")])]),_v(": Indicates the timezone to be used for the analysis.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ZONE_ID")]),_v(" The timezone in the format "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ZONE_ID[±hh[mm]]")]),_v("."),_c('br'),_v("\nDefault: system's default timezone")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-t")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--timezone UTC+08")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-t UTC-1030")])])]),_v(" "),_c('h3',{attrs:{"id":"until-u-2"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--until")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-u")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#until-u-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--until END_DATE")])]),_v(": Specifies the end date of the analysis period.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("END_DATE")]),_v(" The last date of the period to be analyzed, in the format "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("DD/MM/YYYY")]),_v("."),_c('br'),_v("\nDefault: current date")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-u")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--until 21/10/2017")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-u 21/10/2017")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Note: If the end date is not specified, the date of generating the report will be taken as the end date.")])]),_v(" "),_c('h3',{attrs:{"id":"version-v-2"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--version")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-V")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#version-v-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--version")])]),_v(": Shows the version of RepoSense.")]),_v(" "),_c('ul',[_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-V")]),_v(" (upper case)")])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Cannot be used with any other flags. This flag takes precedence over all other flags other than "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--help")]),_v(".")])]),_v(" "),_c('h3',{attrs:{"id":"view-v-2"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--view")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-v")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#view-v-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--view [REPORT_FOLDER]")])]),_v(": Specifies that the report should be opened in the default browser.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("REPORT_FOLDER")]),_v(" Optional. If specified, no analysis will be performed and the report specified by the argument will be opened."),_c('br'),_v("\nDefault: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./reposense-report")])]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-v")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--view")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-v")])])])],1)])],1),_v(" "),_c('p'),_v(" "),_c('h3',{attrs:{"id":"specifying-which-version-of-reposense-to-use-2"}},[_v("Specifying which version of RepoSense to use"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#specifying-which-version-of-reposense-to-use-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Depending on which version you wish to use for report generation, add one of the following flags to the line "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./get-reposense.py")]),_v(" in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("run.sh")]),_v(" (e.g., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./get-reposense.py --release")]),_v("):")]),_v(" "),_c('ul',[_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--release")]),_v(": Use the latest release (Stable)")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--master")]),_v(": Use the latest version of the master branch")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--tag TAG")]),_v(" (e.g. "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--tag v1.6.1")]),_v("): Use the version identified by the Git tag given")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--commit COMMIT")]),_v(" (e.g. "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--commit abc123")]),_v("): Use the version identified by the Git commit SHA given")])])])])],1),_v(" "),_c('p'),_v(" "),_c('div',{staticClass:"indented-level0"},[_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('span',[_c('span',{staticClass:"glyphicon glyphicon-log-in",attrs:{"aria-hidden":"true"}})]),_v(" Appendix: "),_c('strong',[_v("Config files format")])])]},proxy:true}])},[_v(" "),_c('div',[_c('h1',{staticClass:"display-4",attrs:{"id":"appendix-config-files-format-2"}},[_c('span',[_v("Appendix: Config files format")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#appendix-config-files-format-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{staticClass:"lead"},[_c('p',[_v("Given below are the details of the various config files used by RepoSense.")])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_c('strong',[_v("RepoSense ignores the order of column headers in the CSV config files. However, the spelling of the column headers must match the specified headers exactly, or the column would be ignored by RepoSense.")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_c('strong',[_v("A value in a config file is optional to provide unless it is specified as "),_c('span',{staticClass:"badge bg-danger"},[_v("mandatory")])]),_v(".")])]),_v(" "),_c('h2',{attrs:{"id":"repo-config-csv-2"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#repo-config-csv-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(" file contains repo-level config data.")]),_v(" Each row represents a repository's configuration ("),_c('a',{attrs:{"href":"/RepoSense/ug/repo-config.csv"}},[_v("example")]),_v(").")]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Column Name")]),_v(" "),_c('th',[_v("Explanation")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_v("Repository's Location "),_c('span',{staticClass:"badge bg-danger"},[_v("mandatory")])]),_v(" "),_c('td',[_v("The "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Remote Repo URL")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Disk Path")]),_v(" to the git repository e.g., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://github.com/foo/bar.git")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("C:\\Users\\user\\Desktop\\GitHub\\foo\\bar")])])]),_v(" "),_c('tr',[_c('td',[_v("Branch")]),_v(" "),_c('td',[_v("The branch to analyze in the target repository e.g., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("master")]),_v(". Default: the default branch of the repo")])]),_v(" "),_c('tr',[_c('td',[_v("File formats"),_c('sup',[_v("*+")])]),_v(" "),_c('td',[_v("The file extensions to analyze. Binary file formats, such as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("png")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("jpg")]),_v(", will be automatically labelled as the file type "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("binary")]),_v(" in the generated report. Default: all file formats")])]),_v(" "),_c('tr',[_c('td',[_v("Find Previous Authors")]),_v(" "),_c('td',[_v("Enter "),_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("yes")])]),_v(" to utilize Git blame's ignore revisions functionality, RepoSense will attempt to blame the line changes caused by commits in the ignore commit list to the previous authors who altered those lines (if available).")])]),_v(" "),_c('tr',[_c('td',[_v("Ignore Glob List"),_c('sup',[_v("*+")])]),_v(" "),_c('td',[_v("The list of file path globs to ignore during analysis for each author e.g., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("test/**;temp/**")]),_v(". Refer to the "),_c('a',{attrs:{"href":"https://docs.oracle.com/javase/tutorial/essential/io/fileOps.html#glob"}},[_c('em',[_v("glob format")])]),_v(" for the path glob syntax.")])]),_v(" "),_c('tr',[_c('td',[_v("Ignore standalone config")]),_v(" "),_c('td',[_v("To ignore the standalone config file (if any) in target repository, enter "),_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("yes")])]),_v(". If the cell is empty, the standalone config file in the repo (if any) will take precedence over configurations provided in the csv files.")])]),_v(" "),_c('tr',[_c('td',[_v("Ignore Commits List"),_c('sup',[_v("*+")])]),_v(" "),_c('td',[_v("The list of commits to ignore during analysis. For accurate results, the commits should be provided with their full hash. Additionally, a range of commits can be specified using the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("..")]),_v(" notation e.g. "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("abc123..def456")]),_v(" (both inclusive).")])]),_v(" "),_c('tr',[_c('td',[_v("Ignore Authors List"),_c('sup',[_v("*+")])]),_v(" "),_c('td',[_v("The list of authors to ignore during analysis. Authors should be specified by their "),_c('a',{attrs:{"href":"#a-note-about-git-author-name"}},[_v("Git Author Name")]),_v(".")])]),_v(" "),_c('tr',[_c('td',[_v("Shallow Cloning")]),_v(" "),_c('td',[_v("Enter "),_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("yes")])]),_v(" to clone the repository using Git's shallow cloning functionality. This option can significantly reduce the time taken to clone large repositories. However, the option should ideally be disabled for smaller repositories where the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(".git")]),_v(" file is smaller than 500 MB, as it would create overhead.")])]),_v(" "),_c('tr',[_c('td',[_v("File Size Limit"),_c('sup',[_v("+")])]),_v(" "),_c('td',[_v("Enter a file size limit for the repository in bytes as a single number without units (for a size limit of 1MB for example, enter 1000000). This file size limit will override the default file size limit (500KB). Files exceeding the file size limit will be marked as ignored and only the file name and line count will be reflected in the report.")])]),_v(" "),_c('tr',[_c('td',[_v("Ignore File Size Limit")]),_v(" "),_c('td',[_v("Enter "),_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("yes")])]),_v(" to ignore both the default file size limit and the file size limit possibly set by the user in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(".")])]),_v(" "),_c('tr',[_c('td',[_v("Skip Ignored File Analysis")]),_v(" "),_c('td',[_v("Enter "),_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("yes")])]),_v(" to ignore analysis of files exceeding the file size limit entirely. If file analysis is skipped, all information about the file will be omitted from the generated report. This option can significantly improve report generation time.")])])])])]),_c('box',{attrs:{"type":"info","seamless":""}},[_v("\nThe Shallow Cloning option is incompatible with the \"--last-modified-date\" CLI flag.\n")]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_v("\nIf Ignore File Size Limit is yes, the File Size Limit and Skip Ignored File Analysis columns are ignored.\n")]),_v(" "),_c('p',[_c('sup',[_v("* "),_c('strong',[_v("Multi-value column")]),_v(": multiple values can be entered in this column using a semicolon "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(";")]),_v(" as the separator.")]),_c('br'),_v(" "),_c('sup',[_v("+ "),_c('strong',[_v("Overrideable column")]),_v(": prepend with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("override:")]),_v(" to use entered value(s) instead of value(s) from standalone config.")])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("When using "),_c('a',{attrs:{"href":"#config-json-standalone-config-file"}},[_v("standalone config")]),_v(" (if it is not ignored), it is possible to override specific values from the standalone config by prepending the entered value with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("override:")]),_v(".")])]),_v(" "),_c('h2',{attrs:{"id":"author-config-csv-2"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#author-config-csv-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Optionally, you can use an "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(" (which should be in the same directory as the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(" file) to provide more details about the authors to analyze ("),_c('a',{attrs:{"href":"/RepoSense/ug/author-config.csv"}},[_v("example")]),_v("). It should contain the following columns:")]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Column Name")]),_v(" "),_c('th',[_v("Explanation")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_v("Repository's Location"),_c('sup',[_v("*")])]),_v(" "),_c('td',[_v("Same as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(". Default: all the repos in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(".")])]),_v(" "),_c('tr',[_c('td',[_v("Branch")]),_v(" "),_c('td',[_v("The branch to analyze for this author, e.g., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("master")]),_v(". Default: the author will be bound to all the repos in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(" that has the same repo's location, regardless of branch.")])]),_v(" "),_c('tr',[_c('td',[_v("Author's Git Host ID"),_c('sup',[_v("#")]),_v(" "),_c('span',{staticClass:"badge bg-danger"},[_v("mandatory")])]),_v(" "),_c('td',[_v("Username of the target author's profile on GitHub, GitLab or Bitbucket, e.g."),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("JohnDoe")]),_v(".")])]),_v(" "),_c('tr',[_c('td',[_v("Author's Emails"),_c('sup',[_v("*")])]),_v(" "),_c('td',[_v("Associated emails of the author. For GitHub users, this can be found in your "),_c('a',{attrs:{"href":"https://github.com/settings/emails"}},[_v("GitHub settings")]),_v(".")])]),_v(" "),_c('tr',[_c('td',[_v("Author's Display Name")]),_v(" "),_c('td',[_v("The name to display for the author. Default: author's username.")])]),_v(" "),_c('tr',[_c('td',[_v("Author's Git Author Name"),_c('sup',[_v("*")])]),_v(" "),_c('td',[_v("The meaning of "),_c('em',[_v("Git Author Name")]),_v(" is explained in "),_c('a',{attrs:{"href":"#a-note-about-git-author-name"}},[_c('em',[_v("A note about git author name")])]),_v(".")])]),_v(" "),_c('tr',[_c('td',[_v("Ignore Glob List"),_c('sup',[_v("*")])]),_v(" "),_c('td',[_v("Files to ignore for this author, in addition to files ignored by the patterns specified in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(". The path glob syntax is the same as that of Ignore Glob List in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(".")])])])])]),_c('p',[_c('sup',[_v("* "),_c('strong',[_v("Multi-value column")]),_v(": multiple values can be entered in this column using a semicolon "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(";")]),_v(" as the separator.")]),_v(" "),_c('br'),_v(" "),_c('sup',[_v("# For backward compatibility, "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Author's GitHub ID")]),_v(" is still accepted as the header in place of "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Author's Git Host ID")]),_v(".")])]),_v(" "),_c('p',[_v("If "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(" is not given and the repo has not provided author details in a standalone config file, all the authors of the repositories within the date range specified (if any) will be analyzed.")]),_v(" "),_c('p',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(" has some advanced syntax that can help to reduce duplication of the author's information. The syntax guide is given below:")]),_v(" "),_c('div',{staticClass:"indented-level0"},[_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('span',[_c('span',{staticClass:"glyphicon glyphicon-log-in",attrs:{"aria-hidden":"true"}})]),_v(" Appendix: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(" advanced syntax")])]},proxy:true}])},[_v(" "),_c('div',[_c('h1',{staticClass:"display-4",attrs:{"id":"appendix-author-config-csv-advanced-syntax-2"}},[_c('span',[_v("Appendix: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(" advanced syntax")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#appendix-author-config-csv-advanced-syntax-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{staticClass:"lead"},[_c('p',[_v("Given below are the advanced syntax available for "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(".")])]),_v(" "),_c('h2',{attrs:{"id":"multiple-repository-s-location-per-author-2"}},[_v("Multiple "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repository's Location")]),_v(" per author"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#multiple-repository-s-location-per-author-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('h4',{attrs:{"id":"specifying-multiple-repository-s-location-2"}},[_v("Specifying multiple "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repository's Location")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#specifying-multiple-repository-s-location-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("To specify multiple "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repository's Location")]),_v(" in a single row, we can use a semicolon "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(";")]),_v(" as a separator.")]),_v(" "),_c('p',[_v("Below is an example:")]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Repository's Location")]),_v(" "),_c('th',[_v("Branch")]),_v(" "),_c('th',[_v("Author's Git Host ID")]),_v(" "),_c('th',[_v("... Hidden columns")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://github.com/reposense/RepoSense.git;https://github.com/MarkBind/markbind.git")])]),_v(" "),_c('td',[_v("master")]),_v(" "),_c('td',[_v("sikai00")]),_v(" "),_c('td',[_v("--")])])])])]),_c('p',[_v("We have now furnished author details for both repositories in a single row, instead of having two individual rows per "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repository's Location")]),_v(".")]),_v(" "),_c('br'),_v(" "),_c('h4',{attrs:{"id":"specifying-repository-s-location-with-one-or-more-specific-branches-2"}},[_v("Specifying "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repository's Location")]),_v(" with one or more specific branches"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#specifying-repository-s-location-with-one-or-more-specific-branches-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("To list out one or more branches for a particular "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repository's Location")]),_v(", we can use a pipe "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("|")]),_v(" separator to demarcate the different branches.")]),_v(" "),_c('p',[_v("Below is an example:")]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Repository's Location")]),_v(" "),_c('th',[_v("Branch")]),_v(" "),_c('th',[_v("Author's Git Host ID")]),_v(" "),_c('th',[_v("... Hidden columns")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://github.com/reposense/RepoSense.git~master|release|cypress")])]),_v(" "),_c('td',[_v("master")]),_v(" "),_c('td',[_v("sikai00")]),_v(" "),_c('td',[_v("--")])])])])]),_c('p',[_v("We have now provided author details for three different branches in a single repo, using a single row.")]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("The branch specified through the delimiter syntax will take precedence over the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Branch")]),_v(" column.")])]),_v(" "),_c('h2',{attrs:{"id":"using-github-branch-url-as-repository-s-location-2"}},[_v("Using GitHub branch URL as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repository's Location")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#using-github-branch-url-as-repository-s-location-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("We can also use GitHub branch URL as copied from the address bar directly, to be able to quickly use the URL to specify the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repository's Location")]),_v(" and a specific "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Branch")]),_v(" at the same time.")]),_v(" "),_c('p',[_v("Below is an example:")]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Repository's Location")]),_v(" "),_c('th',[_v("Branch")]),_v(" "),_c('th',[_v("Author's Git Host ID")]),_v(" "),_c('th',[_v("... Hidden columns")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://github.com/reposense/RepoSense/tree/release")])]),_v(" "),_c('td'),_v(" "),_c('td',[_v("sikai00")]),_v(" "),_c('td',[_v("--")])])])])]),_c('p',[_v("There is no need to specify the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Branch")]),_v(" column now, as we have specified it through the GitHub branch URL.")]),_v(" "),_c('box',{attrs:{"type":"warning","seamless":""}},[_c('p',[_v("GitLab and BitBucket branch URL are not supported at the moment.")])]),_v(" "),_c('h2',{attrs:{"id":"combining-the-advanced-syntax-2"}},[_v("Combining the advanced syntax"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#combining-the-advanced-syntax-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("It is possible to combine the above-mentioned advanced syntax. By doing so, we can go from:")]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Repository's Location")]),_v(" "),_c('th',[_v("Branch")]),_v(" "),_c('th',[_v("Author's Git Host ID")]),_v(" "),_c('th',[_v("... Hidden columns")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://github.com/MarkBind/markbind/tree/vue3-migration")])]),_v(" "),_c('td'),_v(" "),_c('td',[_v("sikai00")]),_v(" "),_c('td',[_v("--")])]),_v(" "),_c('tr',[_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://github.com/reposense/RepoSense.git")])]),_v(" "),_c('td',[_v("master")]),_v(" "),_c('td',[_v("sikai00")]),_v(" "),_c('td',[_v("--")])]),_v(" "),_c('tr',[_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://github.com/reposense/RepoSense.git")])]),_v(" "),_c('td',[_v("cypress")]),_v(" "),_c('td',[_v("sikai00")]),_v(" "),_c('td',[_v("--")])])])])]),_c('p',[_v("to:")]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Repository's Location")]),_v(" "),_c('th',[_v("Branch")]),_v(" "),_c('th',[_v("Author's Git Host ID")]),_v(" "),_c('th',[_v("... Hidden columns")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://github.com/MarkBind/markbind/tree/vue3-migration;https://github.com/reposense/RepoSense.git~master|cypress")])]),_v(" "),_c('td'),_v(" "),_c('td',[_v("sikai00")]),_v(" "),_c('td',[_v("--")])])])])]),_c('br')],1)])],1),_v(" "),_c('p'),_v(" "),_c('h2',{attrs:{"id":"group-config-csv-2"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("group-config.csv")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#group-config-csv-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Optionally, you can provide a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("group-config.csv")]),_v("(which should be in the same directory as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(" file) to provide details on any custom groupings for files in specified repositories ("),_c('a',{attrs:{"href":"/RepoSense/ug/group-config.csv"}},[_v("example")]),_v("). It should contain the following columns:")]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Column Name")]),_v(" "),_c('th',[_v("Explanation")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_v("Repository's Location")]),_v(" "),_c('td',[_v("Same as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(". Default: all the repos in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")])])]),_v(" "),_c('tr',[_c('td',[_v("Group Name "),_c('span',{staticClass:"badge bg-danger"},[_v("mandatory")])]),_v(" "),_c('td',[_v("Name of the group, e.g.,"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("test")]),_v(".")])]),_v(" "),_c('tr',[_c('td',[_v("Globs * "),_c('span',{staticClass:"badge bg-danger"},[_v("mandatory")])]),_v(" "),_c('td',[_v("The list of file path globs to include for specified group, e.g.,"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("**/test/*;**.java")]),_v(".")])])])])]),_c('p',[_c('sup',[_v("* "),_c('strong',[_v("Multi-value column")]),_v(": multiple values can be entered in this column using a semicolon "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(";")]),_v(" as the separator.")])]),_v(" "),_c('p',[_v("Note that a file in a given repository should only be tagged to one group. "),_c('br'),_v("\ne.g.: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("example.java")]),_v(" in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("example-repo")]),_v(" can either be in the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("test")]),_v(" group or the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("code")]),_v(" group, but not in both "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("test")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("code")]),_v(" group. If multiple groups are specified for a given file, the latter group (i.e., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("code")]),_v(" group) is set for the file.")]),_v(" "),_c('h2',{attrs:{"id":"report-config-json-2"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("report-config.json")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#report-config-json-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("You can optionally use "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("report-config.json")]),_v(" to customize report generation by providing the following information. ("),_c('a',{attrs:{"href":"/RepoSense/ug/report-config.json"}},[_v("example")]),_v(")")]),_v(" "),_c('p',[_c('strong',[_v("Fields to provide")]),_v(":")]),_v(" "),_c('ul',[_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("title")]),_v(": Title of the generated report, which is also the title of the deployed dashboard. Default: \"RepoSense Report\"")])]),_v(" "),_c('div',{attrs:{"id":"section-standalone"}},[_c('h2',{attrs:{"id":"config-json-standalone-config-file-2"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("config.json")]),_v(" (standalone config file)"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#config-json-standalone-config-file-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Repo owners can provide the following additional information to RepoSense using a config file that we call the "),_c('strong',[_c('em',[_v("standalone config file")])]),_v(":")]),_v(" "),_c('ul',[_c('li',[_v("which files/authors/commits to analyze/omit")]),_v(" "),_c('li',[_v("which git and git host usernames belong to which authors")]),_v(" "),_c('li',[_v("the display of an author")])]),_v(" "),_c('p',[_v("To use this feature, add a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("_reposense/config.json")]),_v(" to the root of your repo using the format in the example below ("),_c('a',{attrs:{"href":"https://github.com/reposense/RepoSense/blob/master/_reposense/config.json"}},[_v("another example")]),_v(") and "),_c('strong',[_v("commit it")]),_v(" (reason: RepoSense can see committed code only):")]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"no-line-numbers hljs json"}},[_c('span',[_v("{\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"ignoreGlobList\"")]),_v(": ["),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"about-us/**\"")]),_v(", "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"**index.html\"")]),_v("],\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"formats\"")]),_v(": ["),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"html\"")]),_v(", "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"css\"")]),_v("],\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"ignoreCommitList\"")]),_v(": ["),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"90018e49f129ce7e0abdc8b18e91c9813588c601\"")]),_v(", "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"67890def\"")]),_v(", "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"abc123..def456\"")]),_v("],\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"ignoreAuthorList\"")]),_v(": ["),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"charlie\"")]),_v("],\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"authors\"")]),_v(":\n")]),_c('span',[_v(" [\n")]),_c('span',[_v(" {\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"gitId\"")]),_v(": "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"alice\"")]),_v(",\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"emails\"")]),_v(": ["),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"alice@example.com\"")]),_v(", "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"alicet@example.com\"")]),_v("],\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"displayName\"")]),_v(": "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"Alice T.\"")]),_v(",\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"authorNames\"")]),_v(": ["),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"AT\"")]),_v(", "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"A\"")]),_v("],\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"ignoreGlobList\"")]),_v(": ["),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"**.css\"")]),_v("]\n")]),_c('span',[_v(" },\n")]),_c('span',[_v(" {\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"gitId\"")]),_v(": "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"bob\"")]),_v("\n")]),_c('span',[_v(" }\n")]),_c('span',[_v(" ]\n")]),_c('span',[_v("}\n")])])]),_c('p',[_v("Note: all fields are optional unless specified otherwise.")]),_v(" "),_c('p',[_c('strong',[_v("Fields to provide "),_c('em',[_v("repository-level")]),_v(" info")]),_v(":")]),_v(" "),_c('ul',[_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ignoreGlobList")]),_v(": Folders/files to ignore, specified using the "),_c('a',{attrs:{"href":"https://docs.oracle.com/javase/tutorial/essential/io/fileOps.html#glob"}},[_c('em',[_v("glob format")])]),_v(".")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("formats")]),_v(": File formats to analyze. Binary file formats, such as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("png")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("jpg")]),_v(", will be automatically labelled as the file type "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("binary")]),_v(" in the generated report. Default: all file formats")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ignoreCommitList")]),_v(": The list of commits to ignore during analysis. For accurate results, the commits should be provided with their full hash. Additionally, a range of commits can be specified using the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("..")]),_v(" notation e.g. "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("abc123..def456")]),_v(" (both inclusive).")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ignoreAuthorList")]),_v(": The list of authors to ignore during analysis. Authors specified in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("authors")]),_v(" field or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(" will be also be omitted if they are in this list. Authors should be specified by their "),_c('a',{attrs:{"href":"#a-note-about-git-author-name"}},[_v("Git Author Name")]),_v(".")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("fileSizeLimit")]),_v(": A file size limit for the repository in bytes as a single number without units, that will override the default file size limit. If not specified, the default file size limit will continue to be used.")])]),_v(" "),_c('p',[_c('strong',[_v("Fields to provide "),_c('em',[_v("author-level")]),_v(" info")]),_v(":"),_c('br'),_v("\nNote: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("authors")]),_v(" field should contain "),_c('em',[_v("all")]),_v(" authors that should be captured in the analysis.")]),_v(" "),_c('ul',[_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("gitId")]),_v(": Username of the author. "),_c('span',{staticClass:"badge bg-danger"},[_v("mandatory")]),_v(" field.")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("emails")]),_v(": Associated git emails of the author. For GitHub, this can be found in your "),_c('a',{attrs:{"href":"https://github.com/settings/emails"}},[_v("GitHub settings")]),_v(".")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("displayName")]),_v(": Name to display on the report for this author.")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("authorNames")]),_v(": Git Author Name(s) used in the author's commits. By default, RepoSense assumes an author would use their remote Git Host username as the Git username too. The meaning of "),_c('em',[_v("Git Author Name")]),_v(" is explained in "),_c('a',{attrs:{"href":"#a-note-about-git-author-name"}},[_c('em',[_v("A note about git author name")])]),_v(".")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ignoreGlobList")]),_v(": "),_c('em',[_v("Additional")]),_v(" (i.e. on top of the repo-level "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ignoreGlobList")]),_v(") folders/files to ignore for a specific author. The path glob syntax is specified by the "),_c('a',{attrs:{"href":"https://docs.oracle.com/javase/tutorial/essential/io/fileOps.html#glob"}},[_c('em',[_v("glob format")])]),_v(". In the example above, the actual "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ignoreGlobList")]),_v(" for "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("alice")]),_v(" would be "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("[\"about-us/**\", \"**index.html\", \"**.css\"]")]),_v(".")])]),_v(" "),_c('p',[_v("To verify your standalone configuration is as intended, add the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("_reposense/config.json")]),_v(" to your local copy of repo and run RepoSense against it as follows:"),_c('br')]),_v(" "),_c('ul',[_c('li',[_v("Format: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar --repo LOCAL_REPO_LOCATION")]),_v(" "),_c('br')]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar --repo c:/myRepose/foo/bar")]),_c('br'),_v("\nAfter that, view the report to see if the configuration you specified in the config file is being reflected correctly in the report.")])]),_v(" "),_c('h2',{attrs:{"id":"a-note-about-git-author-name-2"}},[_v("A note about git author name"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#a-note-about-git-author-name-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Git Author Name")]),_v(" refers to the customizable author's display name set in the local "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(".gitconfig")]),_v(" file. For example, in the Git Log's display:")]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"no-line-numbers hljs"}},[_c('span',[_v("...\n")]),_c('span',[_v("commit cd7f610e0becbdf331d5231887d8010a689f87c7\n")]),_c('span',[_v("Author: ConfiguredAuthorName \n")]),_c('span',[_v("Date: Fri Feb 9 19:14:41 2018 +0800\n")]),_c('span',[_v("\n")]),_c('span',[_v(" Make some changes to show my new author's name\n")]),_c('span',[_v("\n")]),_c('span',[_v("commit e3f699fd4ef128eebce98d5b4e5b3bb06a512f49\n")]),_c('span',[_v("Author: ActualGitHostId \n")]),_c('span',[_v("Date: Fri Feb 9 19:13:13 2018 +0800\n")]),_c('span',[_v("\n")]),_c('span',[_v(" Initial commit\n")]),_c('span',[_v(" ...\n")])])]),_c('p',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ActualGitHostId")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ConfiguredAuthorName")]),_v(" are both "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Git Author Name")]),_v(" of the same author."),_c('br'),_v("\nTo find the author name that you are currently using for your current git repository, run the following command within your git repository:")]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"no-line-numbers hljs"}},[_c('span',[_v("git config user.name\n")])])]),_c('p',[_v("To set the author name to the value you want (e.g., to set it to your GitHub username) for your current git repository, you can use the following command ("),_c('a',{attrs:{"href":"https://www.git-tower.com/learn/git/faq/change-author-name-email"}},[_v("more info")]),_v("):")]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"no-line-numbers hljs"}},[_c('span',[_v("git config user.name \"YOUR_AUTHOR_NAME”\n")])])]),_c('p',[_v("To set the author name to use a default value you want for future git repositories, you can use the following command:")]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"no-line-numbers hljs"}},[_c('span',[_v("git config --global user.name \"YOUR_AUTHOR_NAME”\n")])])]),_c('p',[_v("RepoSense expects the Git Author Name to be the same as author's username on the Git hosting platform (GitHub, GitLab, BitBucket). If an author's "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Git Author Name")]),_v(" is different from their username on the Git hosting platform, the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Git Author Name")]),_v(" needs to be specified in the standalone config file. If the author has more than one "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Git Author Name")]),_v(", multiple values can be entered too.")]),_v(" "),_c('box',{attrs:{"type":"warning","seamless":""}},[_c('p',[_v("Note: Symbols such as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("\"")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("!")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("/")]),_v(" etc. in your author name will be omitted, which may reduce the accuracy of the analysis if 2 names in the repository are approximately similar.")])])],1),_v(" "),_c('div',{attrs:{"id":"section-blurbs"}},[_c('h2',{attrs:{"id":"blurbs-md-2"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("blurbs.md")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#blurbs-md-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("You can optionally use "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("blurbs.md")]),_v(" to add blurbs in Markdown syntax for repository branches. These blurbs will be seen when grouping by "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repo/Branch")]),_v(". ("),_c('a',{attrs:{"href":"https://github.com/reposense/RepoSense/blob/master/docs/ug/blurbs.md"}},[_v("example")]),_v(")")]),_v(" "),_c('p',[_c('strong',[_v("Format")]),_v(":")]),_v(" "),_c('ul',[_c('li',[_v("First line in section: Link to the repository branch.")]),_v(" "),_c('li',[_v("Second line onwards: Blurb content.")]),_v(" "),_c('li',[_v("Delimiter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("")]),_v(". Everything on the line after the delimiter will be ignored.")])])])],1)])],1),_v(" "),_c('p')]),_v(" "),_c('p',[_c('span',{staticClass:"badge bg-dark bigger-level0"},[_v("Step 8")]),_v(" "),_c('strong',[_v("View the generated report:")])]),_v(" "),_c('ol',[_c('li',[_v("Go to the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Settings")]),_v(" page of your fork in GitHub.")]),_v(" "),_c('li',[_v("Under the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("GitHub Pages")]),_v(" section, look for "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Your site is published at [LINK]")]),_v(". It should look something like "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://[YOUR_GITHUB_ID].github.io/publish-RepoSense")]),_v(".\n"),_c('a',{attrs:{"href":"/RepoSense/images/publishingguide-githubsetting.jpg","target":"_self"}},[_c('img',{staticClass:"img-fluid",attrs:{"src":"/RepoSense/images/publishingguide-githubsetting.jpg","alt":"GitHub Setting","title":"GitHub Setting"}})])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("It takes a few minutes for report generation. Meanwhile, you can monitor the progress live at "),_c('a',{attrs:{"href":"https://travis-ci.org/dashboard/builds"}},[_v("Travis-CI's Builds")]),_v(".")])])],1)])],1),_v(" "),_c('p')],1)],1),_v(" "),_m(11)])} +with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"fixed":""}},[_c('navbar',{attrs:{"type":"dark"},scopedSlots:_u([{key:"brand",fn:function(){return [_c('a',{staticClass:"navbar-brand",attrs:{"href":"/index.html","title":"Home"}},[_c('img',{attrs:{"width":"30px","src":"/favicon.ico"}})])]},proxy:true},{key:"right",fn:function(){return [_c('li',[_c('form',{staticClass:"navbar-form"},[_c('searchbar',{attrs:{"data":searchData,"placeholder":"Search","on-hit":searchCallback,"menu-align-right":""}})],1)])]},proxy:true}])},[_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/index.html"}},[_v("HOME")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/showcase.html"}},[_v("SHOWCASE")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/ug/index.html"}},[_v("USER GUIDE")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/dg/index.html"}},[_v("DEVELOPER GUIDE")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/about.html"}},[_v("ABOUT")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/contact.html"}},[_v("CONTACT")])]),_v(" "),_c('li',{attrs:{"tags":"dev"}},[_c('a',{staticClass:"nav-link",attrs:{"href":"https://reposense.org","target":"_blank"}},[_c('span',[_c('span',{staticClass:"fas fa-external-link-alt",attrs:{"aria-hidden":"true"}}),_v(" PRODUCTION SITE")])])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"https://github.com/RepoSense/reposense","target":"_blank"}},[_c('span',[_c('span',{staticClass:"fab fa-github",attrs:{"aria-hidden":"true"}})])])])]),_v(" "),_m(0)],1),_v(" "),_c('div',{attrs:{"id":"flex-body"}},[_c('overlay-source',{staticClass:"fixed-header-padding",attrs:{"id":"site-nav","tag-name":"nav","to":"site-nav"}},[_c('div',{staticClass:"site-nav-top"},[_c('div',{staticClass:"font-weight-bold mb-2",staticStyle:{"font-size":"1.25rem"}},[_c('span',[_c('strong',[_c('strong',[_v("USER GUIDE")])])])])]),_v(" "),_c('div',{staticClass:"nav-component slim-scroll"},[_c('div',[_c('site-nav',[_c('overlay-source',{staticClass:"site-nav-list site-nav-list-root",attrs:{"tag-name":"ul","to":"mb-site-nav"}},[_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/index.html"}},[_c('strong',[_v("Overview")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/generatingReports.html"}},[_c('strong',[_v("Generating reports")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/usingReports.html"}},[_c('strong',[_v("Using reports")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/customizingReports.html"}},[_c('strong',[_v("Customizing reports")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/sharingReports.html"}},[_c('strong',[_v("Sharing reports")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('strong',[_v("Appendices")]),_v(" "),_c('div',{staticClass:"site-nav-dropdown-btn-container"},[_c('i',{staticClass:"site-nav-dropdown-btn-icon site-nav-rotate-icon",attrs:{"onclick":"handleSiteNavClick(this.parentNode.parentNode, false); event.stopPropagation();"}},[_c('span',{staticClass:"glyphicon glyphicon-menu-down",attrs:{"aria-hidden":"true"}})])])]),_c('ul',{staticClass:"site-nav-dropdown-container site-nav-dropdown-container-open site-nav-list"},[_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/cli.html"}},[_v("CLI syntax reference")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/configFiles.html"}},[_v("Config files format")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/authorConfigSyntax.html"}},[_v("Advanced syntax: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/usingAuthorTags.html"}},[_v("Using "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("@@author")]),_v(" tags")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/withNetlify.html"}},[_v("RepoSense with Netlify")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/withGithubActions.html"}},[_v("RepoSense with GitHub Actions")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/withTravis.html"}},[_v("RepoSense with Travis")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/runSh.html"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("run.sh")]),_v(" format")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/faq.html"}},[_v("FAQ")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/troubleshooting.html"}},[_v("Troubleshooting")])])])])])])],1)],1)])]),_v(" "),_c('div',{staticClass:"fixed-header-padding",attrs:{"id":"content-wrapper"}},[_m(1),_v(" "),_m(2),_v(" "),_m(3),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("RepoSense is built to analyze any type of git repo, remote or local. It works best when analyzing remote repositories hosted on GitHub, GitLab or BitBucket.\nFor other types of repositories, external links are disabled.")])]),_v(" "),_m(4),_v(" "),_m(5),_v(" "),_c('p',[_c('strong',[_v("To learn how to generate a report using "),_c('tooltip',{scopedSlots:_u([{key:"content",fn:function(){return [_v("e.g., generate a report for a different period, for specific file types, for specific authors, etc.")]},proxy:true}])},[_v("other settings")])],1),_v(", head over to the "),_m(6),_v(" section.")]),_v(" "),_m(7),_v(" "),_m(8),_v(" "),_m(9),_v(" "),_c('div',{staticClass:"indented-level0"},[_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('span',[_c('span',{staticClass:"glyphicon glyphicon-log-in",attrs:{"aria-hidden":"true"}})]),_v(" Appendix: "),_c('strong',[_v("Using RepoSense with Netlify → Setting up")])])]},proxy:true}])},[_v(" "),_c('div',[_c('box',{attrs:{"type":"warning","seamless":""}},[_c('p',[_v("Note that Netlify has a low limit for free tier users (only 300 "),_c('em',[_v("build minutes")]),_v(" per month as at June 2020 -- a single report generation can take 2-3 build minutes, longer if your report includes many/big repositories).")])]),_v(" "),_c('h2',{attrs:{"id":"setting-up"}},[_v("Setting up"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#setting-up","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('span',{staticClass:"badge bg-dark bigger-level0"},[_v("Step 1")]),_v(" "),_c('strong',[_v("Fork the "),_c('em',[_v("publish-RepoSense")]),_v(" repository")]),_v(" using this "),_c('a',{attrs:{"href":"https://github.com/RepoSense/publish-RepoSense/fork"}},[_v("link")]),_v(". Optionally, you can rename the fork to match your RepoSense report e.g., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("project-code-dashboard")]),_v(".")]),_v(" "),_c('p',[_c('span',{staticClass:"badge bg-dark bigger-level0"},[_v("Step 2")]),_v(" "),_c('strong',[_v("Set up Netlify for your fork")]),_v(" as described in this "),_c('a',{attrs:{"href":"https://www.netlify.com/blog/2016/09/29/a-step-by-step-guide-deploying-on-netlify/"}},[_v("guide")]),_v("."),_c('br'),_v(" "),_c('mark',[_v("You will need to use the following in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Step 5: Configure Your Settings")]),_v(" of that guide")]),_v(":")]),_v(" "),_c('ul',[_c('li',[_v("build command: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("pip install requests && ./run.sh")]),_c('br')]),_v(" "),_c('li',[_v("publish directory: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./reposense-report")])])]),_v(" "),_c('p',[_v("After Netlify finishes building the site, you should be able to see a dummy report at the URL of your Netlify site.")]),_v(" "),_c('p',[_c('span',{staticClass:"badge bg-dark bigger-level0"},[_v("Step 3")]),_v(" "),_c('strong',[_v("Generate the report you want")]),_v(" by updating the settings in your fork.")]),_v(" "),_c('ol',[_c('li',[_v("Go to the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("run.sh")]),_v(" file of your fork (on GitHub).")]),_v(" "),_c('li',[_v("Update the last line (i.e., the command for running RepoSense) to match the report you want to generate:"),_c('br'),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar --repos FULL_REPO_URL")]),_v(" (assuming you want to generate a default report for just one repo)"),_c('br'),_v("\ne.g., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar --repos https://github.com/reposense/RepoSense.git")]),_v(" ("),_c('mark',[_v("note the .git at the end of the repo URL")]),_v(")")]),_v(" "),_c('li',[_v("Commit the file. This will trigger Netlify to rebuild the report.")]),_v(" "),_c('li',[_v("Go to the URL of your Netlify site to see the updated RepoSense report (it might take about 2-5 minutes for Netlify to generate the report).")])])],1)])],1),_v(" "),_c('p'),_v(" "),_m(10),_v(" "),_c('div',{staticClass:"indented-level0"},[_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('span',[_c('span',{staticClass:"glyphicon glyphicon-log-in",attrs:{"aria-hidden":"true"}})]),_v(" Appendix: "),_c('strong',[_v("Using RepoSense with GitHub Actions → Setting up")])])]},proxy:true}])},[_v(" "),_c('div',[_c('div',{staticClass:"lead"},[_c('p',[_v("You can use "),_c('a',{attrs:{"href":"https://github.com/features/actions"}},[_c('em',[_v("GitHub Actions")])]),_v(" (together with other GitHub tools) to automate the generating and publishing of RepoSense reports.")])]),_v(" "),_c('h2',{attrs:{"id":"setting-up-2"}},[_v("Setting up"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#setting-up-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',[_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("The instructions below assume you are using GitHub pages to host your report.")])]),_v(" "),_c('p',[_c('span',{staticClass:"badge bg-dark bigger-level0"},[_v("Step 1")]),_v(" "),_c('strong',[_v("Fork the "),_c('em',[_v("publish-RepoSense")]),_v(" repository")]),_v(" using this "),_c('a',{attrs:{"href":"https://github.com/RepoSense/publish-RepoSense/fork"}},[_v("link")]),_v(". Optionally, you can rename the fork to match your RepoSense report e.g., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("project-code-dashboard")]),_v(".")])],1),_v(" "),_c('p',[_c('span',{staticClass:"badge bg-dark bigger-level0"},[_v("Step 2")]),_v(" "),_c('strong',[_v("Activate GitHub Actions on the forked repository:")])]),_v(" "),_c('ol',[_c('li',[_v("Go to the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Actions")]),_v(" page of your fork of the "),_c('a',{attrs:{"href":"https://github.com/reposense/publish-RepoSense"}},[_v("publish-RepoSense")]),_v(" repo.")]),_v(" "),_c('li',[_v("Click on the green button that says "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("I understand my workflows, go ahead and enable them")]),_v(" to enable GitHub Actions on your new repository.")])]),_v(" "),_c('p',[_c('span',{staticClass:"badge bg-dark bigger-level0"},[_v("Step 3")]),_v(" "),_c('strong',[_v("Update report configuration:")])]),_v(" "),_c('div',[_c('p',[_v("In your fork, edit "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("run.sh")]),_v(" (and if applicable, "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("group-config.csv")]),_v(") to customize the command line parameters or repositories to be analyzed.")]),_v(" "),_c('div',{staticClass:"indented-level0"},[_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('span',[_c('span',{staticClass:"glyphicon glyphicon-log-in",attrs:{"aria-hidden":"true"}})]),_v(" Appendix: "),_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("run.sh")]),_v(" format")])])]},proxy:true}])},[_v(" "),_c('div',[_c('h1',{staticClass:"display-4",attrs:{"id":"appendix-run-sh-format"}},[_c('span',[_v("Appendix: run.sh format")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#appendix-run-sh-format","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{staticClass:"lead"},[_c('p',[_c('a',{attrs:{"href":"https://github.com/reposense/publish-RepoSense/blob/master/run.sh"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("run.sh")])]),_v(" is a script used for automating RepoSense report generation.")])]),_v(" "),_c('h3',{attrs:{"id":"customizing-the-reposense-command"}},[_v("Customizing the RepoSense command"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#customizing-the-reposense-command","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("You can update the RepoSense command (i.e., the last line) in the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("run.sh")]),_v(" to match your needs.")]),_v(" "),_c('div',{staticClass:"indented-level0"},[_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('span',[_c('span',{staticClass:"glyphicon glyphicon-log-in",attrs:{"aria-hidden":"true"}})]),_v(" Appendix: "),_c('strong',[_v("CLI syntax reference")])])]},proxy:true}])},[_v(" "),_c('div',[_c('h1',{staticClass:"display-4",attrs:{"id":"appendix-cli-syntax-reference"}},[_c('span',[_v("Appendix: CLI syntax reference")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#appendix-cli-syntax-reference","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{staticClass:"lead"},[_c('p',[_v("The command "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar")]),_v(" takes several flags.")])]),_v(" "),_c('box',[_c('p',[_c('strong',[_v("Examples")]),_v(":")]),_v(" "),_c('p',[_v("An example of a command using most parameters:"),_c('br'),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar --repos https://github.com/reposense/RepoSense.git --output ./report_folder --since 31/1/2017 --until 31/12/2018 --formats java adoc xml --view --ignore-standalone-config --last-modified-date --timezone UTC+08 --find-previous-authors --analyze-authorship --originality-threshold 0.66")])]),_v(" "),_c('p',[_v("Same command as above but using most parameters in alias format:"),_c('br'),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar -r https://github.com/reposense/RepoSense.git -o ./report_folder -s 31/1/2017 -u 31/12/2018 -f java adoc xml -v -i -l -t UTC+08 -F -A -ot 0.66")])])]),_v(" "),_c('p',[_v("The section below provides explanations for each of the flags.")]),_v(" "),_c('h3',{attrs:{"id":"analyze-authorship-a"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--analyze-authorship")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-A")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#analyze-authorship-a","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--analyze-authorship")])]),_v(": Performs further analysis to distinguish between partial and full credit attribution for\nlines of code assigned to the author.")]),_v(" "),_c('ul',[_c('li',[_v("Default: this feature is turned "),_c('em',[_c('strong',[_v("off")])]),_v(" by default and the author will receive partial credits for all lines of\ncode, as the code lines are at least partial credit but may not qualify for full credit.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-A")]),_v(" (upper case)")]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--analyze-authorship")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-A")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("A darker background colour represents full credit, while a lighter background colour represents partial credit.")]),_v(" "),_c('p',[_v("If the code is attributed to a different author by the user via "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("@@author")]),_v(" tag, then the new author will be given\npartial credit.")])]),_v(" "),_c('h3',{attrs:{"id":"assets-a"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--assets")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-a")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#assets-a","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{attrs:{"id":"section-assets"}},[_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--assets ASSETS_DIRECTORY")])]),_v(": Specifies where to place assets for report generation.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ASSETS_DIRECTORY")]),_v(" The directory containing the assets files. A "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("favicon.ico")]),_v(" file can be placed here to customize the favicon of the dashboard, while a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("title.md")]),_v(" file can be placed to customize the "),_c('a',{attrs:{"href":"https://reposense.org/ug/customizingReports.html#add-a-title"}},[_v("title")]),_v(" of the report using "),_c('a',{attrs:{"href":"https://www.markdownguide.org/basic-syntax/"}},[_v("Markdown syntax")]),_v(".")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-a")])]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--assets ./assets")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-a ./assets")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("If "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--assets")]),_v(" is not specified, RepoSense looks for assets in the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./assets")]),_v(" directory.")])])])],1),_v(" "),_c('h3',{attrs:{"id":"config-c"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--config")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-c")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#config-c","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{attrs:{"id":"section-config"}},[_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--config CONFIG_DIRECTORY")])]),_v(": Specifies that config files located in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("CONFIG_DIRECTORY")]),_v(" should be used to customize the report.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("CONFIG_DIRECTORY")]),_v(" The directory containing the config files. Should contain a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(" file. Optionally, can contain an "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(" file or/and a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("group-config.csv")]),_v(" file or/and a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("report-config.json")]),_v(" file or/and a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("blurbs.md")]),_v(" file.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-c")])]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar --config ./config")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("Cannot be used with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repos")]),_v(". The "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repos")]),_v(" flag will take precedence over this flag.")]),_v(" "),_c('li',[_v("If both "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repos")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--config")]),_v(" are not specified, RepoSense looks for config files in the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./config")]),_v(" directory.")]),_v(" "),_c('li',[_v("Config files must follow "),_c('a',{attrs:{"href":"/RepoSense/ug/configFiles.html"}},[_v("this")]),_v(" format.")])])])],1),_v(" "),_c('h3',{attrs:{"id":"formats-f"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--formats")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-f")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#formats-f","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--formats LIST_OF_FORMATS")])]),_v(": Specifies which file extensions to be included in the analysis.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("LIST_OF_FORMATS")]),_v(" A space-separated list of file extensions that should be included in the analysis."),_c('br'),_v("\nDefault: all file formats")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-f")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--formats css fxml gradle")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-f css fxml gradle")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Binary file formats, such as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("jpg")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("png")]),_v(","),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("exe")]),_v(","),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("zip")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("rar")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("docx")]),_v(", and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("pptx")]),_v(", all will be labelled as the file type "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("binary")]),_v(" in the generated report.")])]),_v(" "),_c('h3',{attrs:{"id":"find-previous-authors-f"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--find-previous-authors")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-F")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#find-previous-authors-f","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--find-previous-authors")])]),_v(": Utilizes Git blame's ignore revisions functionality, RepoSense will attempt to blame the line changes caused by commits in the ignore commit list to the previous authors who altered those lines (if available).")]),_v(" "),_c('ul',[_c('li',[_v("Default: RepoSense will assume that no authors are responsible for the code changes in the lines altered by commits in the ignore commit list.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-F")]),_v(" (uppercase F)")]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--find-previous-authors")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-F")])])]),_v(" "),_c('h3',{attrs:{"id":"help-h"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--help")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-h")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#help-h","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--help")])]),_v(": Shows the help message.")]),_v(" "),_c('ul',[_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-h")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Cannot be used with any other flags. This flag takes precedence over all other flags.")])]),_v(" "),_c('h3',{attrs:{"id":"ignore-standalone-config-i"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--ignore-standalone-config")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-i")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#ignore-standalone-config-i","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--ignore-standalone-config")])]),_v(": Specifies that the standalone config file in the repo should be ignored.")]),_v(" "),_c('ul',[_c('li',[_v("Default: the standalone config file is not ignored")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-i")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--ignore-standalone-config")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-i")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("This flag overrides the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Ignore standalone config")]),_v(" field in the CSV config file.")])]),_v(" "),_c('h3',{attrs:{"id":"ignore-filesize-limit-i"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--ignore-filesize-limit")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-I")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#ignore-filesize-limit-i","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--ignore-filesize-limit")])]),_v(": Specifies that the file size limit (both default and user-defined) should be ignored during the analysis.")]),_v(" "),_c('ul',[_c('li',[_v("Default: the file size limit is not ignored")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-I")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--ignore-filesize-limit")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-I")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("All files are subject to a default file size limit or a custom size limit set by the user. Most files should not be\naffected by the default size limit. This flag can be useful for including files in your report that are affected by\nthe size limit. Note that this flag may result in large report sizes and/or slower report generation.")])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("This flag overrides the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Ignore file size limit")]),_v(" field in the CSV config file.")])]),_v(" "),_c('h3',{attrs:{"id":"last-modified-date-l"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--last-modified-date")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-l")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#last-modified-date-l","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--last-modified-date")])]),_v(": Specifies that the last modified date of each line of code should be added to "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("authorship.json")]),_v(".")]),_v(" "),_c('ul',[_c('li',[_v("Default: the last modified date of each line of code will not be added to "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("authorship.json")])]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-l")]),_v(" (lowercase L)")]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--last-modified-date")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-l")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("Cannot be used with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--shallow-cloning")]),_v(". This may result in an incorrect last modified date.")]),_v(" "),_c('li',[_v("The last modified dates will be in the same timezone specified with the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--timezone")]),_v(" flag.")])])]),_v(" "),_c('h3',{attrs:{"id":"originality-threshold-ot"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--originality-threshold")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-ot")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#originality-threshold-ot","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--originality-threshold [VALUE]")])]),_v(": Specifies the cut-off point for partial and full credit\nin "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--analyze-authorship")]),_v(". Author will be given full credit if their contribution exceeds this threshold, else partial\ncredit is given.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("VALUE")]),_v(" Optional. Acceptable range: [0.0, 1.0]."),_c('br'),_v("\nDefault: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("0.51")])]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-ot")])]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--originality-threshold 0.66")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-ot 0.66")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("Requires "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--analyze-authorship")]),_v(" flag.")]),_v(" "),_c('li',[_v("An author's contribution, or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("originality score")]),_v(", is calculated using Levenshtein Distance (Edit Distance) algorithm.\nWe compare the difference between current code line and its previous versions.")])])]),_v(" "),_c('h3',{attrs:{"id":"output-o"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--output")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-o")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#output-o","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--output OUTPUT_DIRECTORY")])]),_v(": Indicates where to save the report generated.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("OUTPUT_DIRECTORY")]),_v(" The location for the generated "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("reposense-report")]),_v(" folder."),_c('br'),_v("\nDefault: current directory")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-o")])]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--output ./foo")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-o ./foo")]),_v(" (the report will be in the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./foo/reposense-report")]),_v(" folder)")])]),_v(" "),_c('h3',{attrs:{"id":"period-p"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--period")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-p")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#period-p","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--period PERIOD")])]),_v(": Specifies the period of analysis window.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("PERIOD")]),_v(" The period of analysis window, in the format "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("nd")]),_v(" (for n days) or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("nw")]),_v(" (for n weeks). It is used to calculate end date if only start date is specified, or calculate end date if only start date is specified.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-p")])]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--period 30d")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--period 4w")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("If both start date and end date are not specified, the date of generating the report will be taken as the end date.")]),_v(" "),_c('li',[_v("May analyze the incorrect date range if used with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since d1")]),_v(". The program will throw a warning.")]),_v(" "),_c('li',[_v("Cannot be used with both "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--until")]),_v(". The program will throw an exception.")])])]),_v(" "),_c('h3',{attrs:{"id":"repo-repos-r"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repo")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repos")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-r")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#repo-repos-r","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repo REPO_LOCATION")])]),_v(": Specifies which repositories to analyze.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("REPO_LOCATION")]),_v(" A list of URLs or the disk location of the git repositories to analyze, separated by spaces.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-r")])]),_v(" "),_c('li',[_v("Examples:\n"),_c('ul',[_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repos https://github.com/reposense/RepoSense.git")])]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repo https://github.com/reposense/RepoSense.git c:/myRepose/foo/bar")]),_v(": analyzes the two specified repos (one remote, one local) and generates one report containing details of both.")])])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Cannot be used with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--config")]),_v(". This flag takes precedence over "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--config")]),_v(".")])]),_v(" "),_c('h3',{attrs:{"id":"shallow-cloning-s"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--shallow-cloning")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-S")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#shallow-cloning-s","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--shallow-cloning")])]),_v(": Clones repositories using Git's shallow cloning functionality, which can significantly reduce the time taken to clone large repositories. However, the flag should not be used for smaller repositories where the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(".git")]),_v(" file is smaller than 500 MB, as it would create overhead.")]),_v(" "),_c('ul',[_c('li',[_v("Default: RepoSense does not clone repositories using Git's shallow cloning functionality.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-S")]),_v(" (uppercase S)")]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--shallow-cloning")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-S")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Cannot be used with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--last-modified-date")]),_v(". This may result in an incorrect last modified date.")])]),_v(" "),_c('h3',{attrs:{"id":"since-s"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-s")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#since-s","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since START_DATE")])]),_v(": Specifies the start date for the period to be analyzed.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("START_DATE")]),_v(" The first day of the period to be analyzed, in the format "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("DD/MM/YYYY")]),_v("."),_c('br'),_v("\nDefault: one month before the current date")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-s")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since 21/10/2017")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-s 21/10/2017")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("If the start date is not specified, only commits made one month before the end date (if specified) or the date of generating the report, will be captured and analyzed.")]),_v(" "),_c('li',[_v("If "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("d1")]),_v(" is specified as the start date ("),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since d1")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-s d1")]),_v("), then the program will search for the earliest commit date of all repositories and use that as the start date.")]),_v(" "),_c('li',[_v("If "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("d1")]),_v(" is specified together with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--period")]),_v(", then the program will warn that the date range being analyzed may be incorrect.")])])]),_v(" "),_c('h3',{attrs:{"id":"timezone-t"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--timezone")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-t")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#timezone-t","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--timezone ZONE_ID")])]),_v(": Indicates the timezone to be used for the analysis.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ZONE_ID")]),_v(" The timezone in the format "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ZONE_ID[±hh[mm]]")]),_v("."),_c('br'),_v("\nDefault: system's default timezone")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-t")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--timezone UTC+08")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-t UTC-1030")])])]),_v(" "),_c('h3',{attrs:{"id":"until-u"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--until")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-u")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#until-u","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--until END_DATE")])]),_v(": Specifies the end date of the analysis period.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("END_DATE")]),_v(" The last date of the period to be analyzed, in the format "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("DD/MM/YYYY")]),_v("."),_c('br'),_v("\nDefault: current date")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-u")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--until 21/10/2017")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-u 21/10/2017")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Note: If the end date is not specified, the date of generating the report will be taken as the end date.")])]),_v(" "),_c('h3',{attrs:{"id":"version-v"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--version")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-V")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#version-v","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--version")])]),_v(": Shows the version of RepoSense.")]),_v(" "),_c('ul',[_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-V")]),_v(" (upper case)")])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Cannot be used with any other flags. This flag takes precedence over all other flags other than "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--help")]),_v(".")])]),_v(" "),_c('h3',{attrs:{"id":"view-v"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--view")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-v")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#view-v","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--view [REPORT_FOLDER]")])]),_v(": Specifies that the report should be opened in the default browser.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("REPORT_FOLDER")]),_v(" Optional. If specified, no analysis will be performed and the report specified by the argument will be opened."),_c('br'),_v("\nDefault: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./reposense-report")])]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-v")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--view")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-v")])])])],1)])],1),_v(" "),_c('p'),_v(" "),_c('h3',{attrs:{"id":"specifying-which-version-of-reposense-to-use"}},[_v("Specifying which version of RepoSense to use"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#specifying-which-version-of-reposense-to-use","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Depending on which version you wish to use for report generation, add one of the following flags to the line "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./get-reposense.py")]),_v(" in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("run.sh")]),_v(" (e.g., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./get-reposense.py --release")]),_v("):")]),_v(" "),_c('ul',[_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--release")]),_v(": Use the latest release (Stable)")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--master")]),_v(": Use the latest version of the master branch")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--tag TAG")]),_v(" (e.g. "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--tag v1.6.1")]),_v("): Use the version identified by the Git tag given")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--commit COMMIT")]),_v(" (e.g. "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--commit abc123")]),_v("): Use the version identified by the Git commit SHA given")])])])])],1),_v(" "),_c('p'),_v(" "),_c('div',{staticClass:"indented-level0"},[_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('span',[_c('span',{staticClass:"glyphicon glyphicon-log-in",attrs:{"aria-hidden":"true"}})]),_v(" Appendix: "),_c('strong',[_v("Config files format")])])]},proxy:true}])},[_v(" "),_c('div',[_c('h1',{staticClass:"display-4",attrs:{"id":"appendix-config-files-format"}},[_c('span',[_v("Appendix: Config files format")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#appendix-config-files-format","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{staticClass:"lead"},[_c('p',[_v("Given below are the details of the various config files used by RepoSense.")])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_c('strong',[_v("RepoSense ignores the order of column headers in the CSV config files. However, the spelling of the column headers must match the specified headers exactly, or the column would be ignored by RepoSense.")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_c('strong',[_v("A value in a config file is optional to provide unless it is specified as "),_c('span',{staticClass:"badge bg-danger"},[_v("mandatory")])]),_v(".")])]),_v(" "),_c('h2',{attrs:{"id":"repo-config-csv"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#repo-config-csv","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(" file contains repo-level config data.")]),_v(" Each row represents a repository's configuration ("),_c('a',{attrs:{"href":"/RepoSense/ug/repo-config.csv"}},[_v("example")]),_v(").")]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Column Name")]),_v(" "),_c('th',[_v("Explanation")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_v("Repository's Location "),_c('span',{staticClass:"badge bg-danger"},[_v("mandatory")])]),_v(" "),_c('td',[_v("The "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Remote Repo URL")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Disk Path")]),_v(" to the git repository e.g., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://github.com/foo/bar.git")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("C:\\Users\\user\\Desktop\\GitHub\\foo\\bar")])])]),_v(" "),_c('tr',[_c('td',[_v("Branch")]),_v(" "),_c('td',[_v("The branch to analyze in the target repository e.g., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("master")]),_v(". Default: the default branch of the repo")])]),_v(" "),_c('tr',[_c('td',[_v("File formats"),_c('sup',[_v("*+")])]),_v(" "),_c('td',[_v("The file extensions to analyze. Binary file formats, such as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("png")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("jpg")]),_v(", will be automatically labelled as the file type "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("binary")]),_v(" in the generated report. Default: all file formats")])]),_v(" "),_c('tr',[_c('td',[_v("Find Previous Authors")]),_v(" "),_c('td',[_v("Enter "),_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("yes")])]),_v(" to utilize Git blame's ignore revisions functionality, RepoSense will attempt to blame the line changes caused by commits in the ignore commit list to the previous authors who altered those lines (if available).")])]),_v(" "),_c('tr',[_c('td',[_v("Ignore Glob List"),_c('sup',[_v("*+")])]),_v(" "),_c('td',[_v("The list of file path globs to ignore during analysis for each author e.g., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("test/**;temp/**")]),_v(". Refer to the "),_c('a',{attrs:{"href":"https://docs.oracle.com/javase/tutorial/essential/io/fileOps.html#glob"}},[_c('em',[_v("glob format")])]),_v(" for the path glob syntax.")])]),_v(" "),_c('tr',[_c('td',[_v("Ignore standalone config")]),_v(" "),_c('td',[_v("To ignore the standalone config file (if any) in target repository, enter "),_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("yes")])]),_v(". If the cell is empty, the standalone config file in the repo (if any) will take precedence over configurations provided in the csv files.")])]),_v(" "),_c('tr',[_c('td',[_v("Ignore Commits List"),_c('sup',[_v("*+")])]),_v(" "),_c('td',[_v("The list of commits to ignore during analysis. For accurate results, the commits should be provided with their full hash. Additionally, a range of commits can be specified using the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("..")]),_v(" notation e.g. "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("abc123..def456")]),_v(" (both inclusive).")])]),_v(" "),_c('tr',[_c('td',[_v("Ignore Authors List"),_c('sup',[_v("*+")])]),_v(" "),_c('td',[_v("The list of authors to ignore during analysis. Authors should be specified by their "),_c('a',{attrs:{"href":"#a-note-about-git-author-name"}},[_v("Git Author Name")]),_v(".")])]),_v(" "),_c('tr',[_c('td',[_v("Shallow Cloning")]),_v(" "),_c('td',[_v("Enter "),_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("yes")])]),_v(" to clone the repository using Git's shallow cloning functionality. This option can significantly reduce the time taken to clone large repositories. However, the option should ideally be disabled for smaller repositories where the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(".git")]),_v(" file is smaller than 500 MB, as it would create overhead.")])]),_v(" "),_c('tr',[_c('td',[_v("File Size Limit"),_c('sup',[_v("+")])]),_v(" "),_c('td',[_v("Enter a file size limit for the repository in bytes as a single number without units (for a size limit of 1MB for example, enter 1000000). This file size limit will override the default file size limit (500KB). Files exceeding the file size limit will be marked as ignored and only the file name and line count will be reflected in the report.")])]),_v(" "),_c('tr',[_c('td',[_v("Ignore File Size Limit")]),_v(" "),_c('td',[_v("Enter "),_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("yes")])]),_v(" to ignore both the default file size limit and the file size limit possibly set by the user in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(".")])]),_v(" "),_c('tr',[_c('td',[_v("Skip Ignored File Analysis")]),_v(" "),_c('td',[_v("Enter "),_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("yes")])]),_v(" to ignore analysis of files exceeding the file size limit entirely. If file analysis is skipped, all information about the file will be omitted from the generated report. This option can significantly improve report generation time.")])])])])]),_c('box',{attrs:{"type":"info","seamless":""}},[_v("\nThe Shallow Cloning option is incompatible with the \"--last-modified-date\" CLI flag.\n")]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_v("\nIf Ignore File Size Limit is yes, the File Size Limit and Skip Ignored File Analysis columns are ignored.\n")]),_v(" "),_c('p',[_c('sup',[_v("* "),_c('strong',[_v("Multi-value column")]),_v(": multiple values can be entered in this column using a semicolon "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(";")]),_v(" as the separator.")]),_c('br'),_v(" "),_c('sup',[_v("+ "),_c('strong',[_v("Overrideable column")]),_v(": prepend with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("override:")]),_v(" to use entered value(s) instead of value(s) from standalone config.")])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("When using "),_c('a',{attrs:{"href":"#config-json-standalone-config-file"}},[_v("standalone config")]),_v(" (if it is not ignored), it is possible to override specific values from the standalone config by prepending the entered value with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("override:")]),_v(".")])]),_v(" "),_c('h2',{attrs:{"id":"author-config-csv"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#author-config-csv","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Optionally, you can use an "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(" (which should be in the same directory as the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(" file) to provide more details about the authors to analyze ("),_c('a',{attrs:{"href":"/RepoSense/ug/author-config.csv"}},[_v("example")]),_v("). It should contain the following columns:")]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Column Name")]),_v(" "),_c('th',[_v("Explanation")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_v("Repository's Location"),_c('sup',[_v("*")])]),_v(" "),_c('td',[_v("Same as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(". Default: all the repos in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(".")])]),_v(" "),_c('tr',[_c('td',[_v("Branch")]),_v(" "),_c('td',[_v("The branch to analyze for this author, e.g., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("master")]),_v(". Default: the author will be bound to all the repos in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(" that has the same repo's location, regardless of branch.")])]),_v(" "),_c('tr',[_c('td',[_v("Author's Git Host ID"),_c('sup',[_v("#")]),_v(" "),_c('span',{staticClass:"badge bg-danger"},[_v("mandatory")])]),_v(" "),_c('td',[_v("Username of the target author's profile on GitHub, GitLab or Bitbucket, e.g."),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("JohnDoe")]),_v(".")])]),_v(" "),_c('tr',[_c('td',[_v("Author's Emails"),_c('sup',[_v("*")])]),_v(" "),_c('td',[_v("Associated emails of the author. For GitHub users, this can be found in your "),_c('a',{attrs:{"href":"https://github.com/settings/emails"}},[_v("GitHub settings")]),_v(".")])]),_v(" "),_c('tr',[_c('td',[_v("Author's Display Name")]),_v(" "),_c('td',[_v("The name to display for the author. Default: author's username.")])]),_v(" "),_c('tr',[_c('td',[_v("Author's Git Author Name"),_c('sup',[_v("*")])]),_v(" "),_c('td',[_v("The meaning of "),_c('em',[_v("Git Author Name")]),_v(" is explained in "),_c('a',{attrs:{"href":"#a-note-about-git-author-name"}},[_c('em',[_v("A note about git author name")])]),_v(".")])]),_v(" "),_c('tr',[_c('td',[_v("Ignore Glob List"),_c('sup',[_v("*")])]),_v(" "),_c('td',[_v("Files to ignore for this author, in addition to files ignored by the patterns specified in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(". The path glob syntax is the same as that of Ignore Glob List in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(".")])])])])]),_c('p',[_c('sup',[_v("* "),_c('strong',[_v("Multi-value column")]),_v(": multiple values can be entered in this column using a semicolon "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(";")]),_v(" as the separator.")]),_v(" "),_c('br'),_v(" "),_c('sup',[_v("# For backward compatibility, "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Author's GitHub ID")]),_v(" is still accepted as the header in place of "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Author's Git Host ID")]),_v(".")])]),_v(" "),_c('p',[_v("If "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(" is not given and the repo has not provided author details in a standalone config file, all the authors of the repositories within the date range specified (if any) will be analyzed.")]),_v(" "),_c('p',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(" has some advanced syntax that can help to reduce duplication of the author's information. The syntax guide is given below:")]),_v(" "),_c('div',{staticClass:"indented-level0"},[_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('span',[_c('span',{staticClass:"glyphicon glyphicon-log-in",attrs:{"aria-hidden":"true"}})]),_v(" Appendix: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(" advanced syntax")])]},proxy:true}])},[_v(" "),_c('div',[_c('h1',{staticClass:"display-4",attrs:{"id":"appendix-author-config-csv-advanced-syntax"}},[_c('span',[_v("Appendix: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(" advanced syntax")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#appendix-author-config-csv-advanced-syntax","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{staticClass:"lead"},[_c('p',[_v("Given below are the advanced syntax available for "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(".")])]),_v(" "),_c('h2',{attrs:{"id":"multiple-repository-s-location-per-author"}},[_v("Multiple "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repository's Location")]),_v(" per author"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#multiple-repository-s-location-per-author","onclick":"event.stopPropagation()"}})]),_v(" "),_c('h4',{attrs:{"id":"specifying-multiple-repository-s-location"}},[_v("Specifying multiple "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repository's Location")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#specifying-multiple-repository-s-location","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("To specify multiple "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repository's Location")]),_v(" in a single row, we can use a semicolon "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(";")]),_v(" as a separator.")]),_v(" "),_c('p',[_v("Below is an example:")]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Repository's Location")]),_v(" "),_c('th',[_v("Branch")]),_v(" "),_c('th',[_v("Author's Git Host ID")]),_v(" "),_c('th',[_v("... Hidden columns")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://github.com/reposense/RepoSense.git;https://github.com/MarkBind/markbind.git")])]),_v(" "),_c('td',[_v("master")]),_v(" "),_c('td',[_v("sikai00")]),_v(" "),_c('td',[_v("--")])])])])]),_c('p',[_v("We have now furnished author details for both repositories in a single row, instead of having two individual rows per "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repository's Location")]),_v(".")]),_v(" "),_c('br'),_v(" "),_c('h4',{attrs:{"id":"specifying-repository-s-location-with-one-or-more-specific-branches"}},[_v("Specifying "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repository's Location")]),_v(" with one or more specific branches"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#specifying-repository-s-location-with-one-or-more-specific-branches","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("To list out one or more branches for a particular "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repository's Location")]),_v(", we can use a pipe "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("|")]),_v(" separator to demarcate the different branches.")]),_v(" "),_c('p',[_v("Below is an example:")]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Repository's Location")]),_v(" "),_c('th',[_v("Branch")]),_v(" "),_c('th',[_v("Author's Git Host ID")]),_v(" "),_c('th',[_v("... Hidden columns")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://github.com/reposense/RepoSense.git~master|release|cypress")])]),_v(" "),_c('td',[_v("master")]),_v(" "),_c('td',[_v("sikai00")]),_v(" "),_c('td',[_v("--")])])])])]),_c('p',[_v("We have now provided author details for three different branches in a single repo, using a single row.")]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("The branch specified through the delimiter syntax will take precedence over the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Branch")]),_v(" column.")])]),_v(" "),_c('h2',{attrs:{"id":"using-github-branch-url-as-repository-s-location"}},[_v("Using GitHub branch URL as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repository's Location")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#using-github-branch-url-as-repository-s-location","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("We can also use GitHub branch URL as copied from the address bar directly, to be able to quickly use the URL to specify the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repository's Location")]),_v(" and a specific "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Branch")]),_v(" at the same time.")]),_v(" "),_c('p',[_v("Below is an example:")]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Repository's Location")]),_v(" "),_c('th',[_v("Branch")]),_v(" "),_c('th',[_v("Author's Git Host ID")]),_v(" "),_c('th',[_v("... Hidden columns")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://github.com/reposense/RepoSense/tree/release")])]),_v(" "),_c('td'),_v(" "),_c('td',[_v("sikai00")]),_v(" "),_c('td',[_v("--")])])])])]),_c('p',[_v("There is no need to specify the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Branch")]),_v(" column now, as we have specified it through the GitHub branch URL.")]),_v(" "),_c('box',{attrs:{"type":"warning","seamless":""}},[_c('p',[_v("GitLab and BitBucket branch URL are not supported at the moment.")])]),_v(" "),_c('h2',{attrs:{"id":"combining-the-advanced-syntax"}},[_v("Combining the advanced syntax"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#combining-the-advanced-syntax","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("It is possible to combine the above-mentioned advanced syntax. By doing so, we can go from:")]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Repository's Location")]),_v(" "),_c('th',[_v("Branch")]),_v(" "),_c('th',[_v("Author's Git Host ID")]),_v(" "),_c('th',[_v("... Hidden columns")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://github.com/MarkBind/markbind/tree/vue3-migration")])]),_v(" "),_c('td'),_v(" "),_c('td',[_v("sikai00")]),_v(" "),_c('td',[_v("--")])]),_v(" "),_c('tr',[_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://github.com/reposense/RepoSense.git")])]),_v(" "),_c('td',[_v("master")]),_v(" "),_c('td',[_v("sikai00")]),_v(" "),_c('td',[_v("--")])]),_v(" "),_c('tr',[_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://github.com/reposense/RepoSense.git")])]),_v(" "),_c('td',[_v("cypress")]),_v(" "),_c('td',[_v("sikai00")]),_v(" "),_c('td',[_v("--")])])])])]),_c('p',[_v("to:")]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Repository's Location")]),_v(" "),_c('th',[_v("Branch")]),_v(" "),_c('th',[_v("Author's Git Host ID")]),_v(" "),_c('th',[_v("... Hidden columns")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://github.com/MarkBind/markbind/tree/vue3-migration;https://github.com/reposense/RepoSense.git~master|cypress")])]),_v(" "),_c('td'),_v(" "),_c('td',[_v("sikai00")]),_v(" "),_c('td',[_v("--")])])])])]),_c('br')],1)])],1),_v(" "),_c('p'),_v(" "),_c('h2',{attrs:{"id":"group-config-csv"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("group-config.csv")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#group-config-csv","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Optionally, you can provide a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("group-config.csv")]),_v("(which should be in the same directory as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(" file) to provide details on any custom groupings for files in specified repositories ("),_c('a',{attrs:{"href":"/RepoSense/ug/group-config.csv"}},[_v("example")]),_v("). It should contain the following columns:")]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Column Name")]),_v(" "),_c('th',[_v("Explanation")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_v("Repository's Location")]),_v(" "),_c('td',[_v("Same as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(". Default: all the repos in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")])])]),_v(" "),_c('tr',[_c('td',[_v("Group Name "),_c('span',{staticClass:"badge bg-danger"},[_v("mandatory")])]),_v(" "),_c('td',[_v("Name of the group, e.g.,"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("test")]),_v(".")])]),_v(" "),_c('tr',[_c('td',[_v("Globs * "),_c('span',{staticClass:"badge bg-danger"},[_v("mandatory")])]),_v(" "),_c('td',[_v("The list of file path globs to include for specified group, e.g.,"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("**/test/*;**.java")]),_v(".")])])])])]),_c('p',[_c('sup',[_v("* "),_c('strong',[_v("Multi-value column")]),_v(": multiple values can be entered in this column using a semicolon "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(";")]),_v(" as the separator.")])]),_v(" "),_c('p',[_v("Note that a file in a given repository should only be tagged to one group. "),_c('br'),_v("\ne.g.: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("example.java")]),_v(" in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("example-repo")]),_v(" can either be in the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("test")]),_v(" group or the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("code")]),_v(" group, but not in both "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("test")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("code")]),_v(" group. If multiple groups are specified for a given file, the latter group (i.e., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("code")]),_v(" group) is set for the file.")]),_v(" "),_c('h2',{attrs:{"id":"report-config-json"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("report-config.json")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#report-config-json","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("You can optionally use "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("report-config.json")]),_v(" to customize report generation by providing the following information. ("),_c('a',{attrs:{"href":"/RepoSense/ug/report-config.json"}},[_v("example")]),_v(")")]),_v(" "),_c('p',[_c('strong',[_v("Fields to provide")]),_v(":")]),_v(" "),_c('ul',[_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("title")]),_v(": Title of the generated report, which is also the title of the deployed dashboard. Default: \"RepoSense Report\"")])]),_v(" "),_c('div',{attrs:{"id":"section-standalone"}},[_c('h2',{attrs:{"id":"config-json-standalone-config-file"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("config.json")]),_v(" (standalone config file)"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#config-json-standalone-config-file","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Repo owners can provide the following additional information to RepoSense using a config file that we call the "),_c('strong',[_c('em',[_v("standalone config file")])]),_v(":")]),_v(" "),_c('ul',[_c('li',[_v("which files/authors/commits to analyze/omit")]),_v(" "),_c('li',[_v("which git and git host usernames belong to which authors")]),_v(" "),_c('li',[_v("the display of an author")])]),_v(" "),_c('p',[_v("To use this feature, add a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("_reposense/config.json")]),_v(" to the root of your repo using the format in the example below ("),_c('a',{attrs:{"href":"https://github.com/reposense/RepoSense/blob/master/_reposense/config.json"}},[_v("another example")]),_v(") and "),_c('strong',[_v("commit it")]),_v(" (reason: RepoSense can see committed code only):")]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"no-line-numbers hljs json"}},[_c('span',[_v("{\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"ignoreGlobList\"")]),_v(": ["),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"about-us/**\"")]),_v(", "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"**index.html\"")]),_v("],\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"formats\"")]),_v(": ["),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"html\"")]),_v(", "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"css\"")]),_v("],\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"ignoreCommitList\"")]),_v(": ["),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"90018e49f129ce7e0abdc8b18e91c9813588c601\"")]),_v(", "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"67890def\"")]),_v(", "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"abc123..def456\"")]),_v("],\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"ignoreAuthorList\"")]),_v(": ["),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"charlie\"")]),_v("],\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"authors\"")]),_v(":\n")]),_c('span',[_v(" [\n")]),_c('span',[_v(" {\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"gitId\"")]),_v(": "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"alice\"")]),_v(",\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"emails\"")]),_v(": ["),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"alice@example.com\"")]),_v(", "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"alicet@example.com\"")]),_v("],\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"displayName\"")]),_v(": "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"Alice T.\"")]),_v(",\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"authorNames\"")]),_v(": ["),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"AT\"")]),_v(", "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"A\"")]),_v("],\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"ignoreGlobList\"")]),_v(": ["),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"**.css\"")]),_v("]\n")]),_c('span',[_v(" },\n")]),_c('span',[_v(" {\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"gitId\"")]),_v(": "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"bob\"")]),_v("\n")]),_c('span',[_v(" }\n")]),_c('span',[_v(" ]\n")]),_c('span',[_v("}\n")])])]),_c('p',[_v("Note: all fields are optional unless specified otherwise.")]),_v(" "),_c('p',[_c('strong',[_v("Fields to provide "),_c('em',[_v("repository-level")]),_v(" info")]),_v(":")]),_v(" "),_c('ul',[_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ignoreGlobList")]),_v(": Folders/files to ignore, specified using the "),_c('a',{attrs:{"href":"https://docs.oracle.com/javase/tutorial/essential/io/fileOps.html#glob"}},[_c('em',[_v("glob format")])]),_v(".")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("formats")]),_v(": File formats to analyze. Binary file formats, such as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("png")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("jpg")]),_v(", will be automatically labelled as the file type "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("binary")]),_v(" in the generated report. Default: all file formats")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ignoreCommitList")]),_v(": The list of commits to ignore during analysis. For accurate results, the commits should be provided with their full hash. Additionally, a range of commits can be specified using the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("..")]),_v(" notation e.g. "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("abc123..def456")]),_v(" (both inclusive).")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ignoreAuthorList")]),_v(": The list of authors to ignore during analysis. Authors specified in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("authors")]),_v(" field or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(" will be also be omitted if they are in this list. Authors should be specified by their "),_c('a',{attrs:{"href":"#a-note-about-git-author-name"}},[_v("Git Author Name")]),_v(".")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("fileSizeLimit")]),_v(": A file size limit for the repository in bytes as a single number without units, that will override the default file size limit. If not specified, the default file size limit will continue to be used.")])]),_v(" "),_c('p',[_c('strong',[_v("Fields to provide "),_c('em',[_v("author-level")]),_v(" info")]),_v(":"),_c('br'),_v("\nNote: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("authors")]),_v(" field should contain "),_c('em',[_v("all")]),_v(" authors that should be captured in the analysis.")]),_v(" "),_c('ul',[_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("gitId")]),_v(": Username of the author. "),_c('span',{staticClass:"badge bg-danger"},[_v("mandatory")]),_v(" field.")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("emails")]),_v(": Associated git emails of the author. For GitHub, this can be found in your "),_c('a',{attrs:{"href":"https://github.com/settings/emails"}},[_v("GitHub settings")]),_v(".")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("displayName")]),_v(": Name to display on the report for this author.")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("authorNames")]),_v(": Git Author Name(s) used in the author's commits. By default, RepoSense assumes an author would use their remote Git Host username as the Git username too. The meaning of "),_c('em',[_v("Git Author Name")]),_v(" is explained in "),_c('a',{attrs:{"href":"#a-note-about-git-author-name"}},[_c('em',[_v("A note about git author name")])]),_v(".")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ignoreGlobList")]),_v(": "),_c('em',[_v("Additional")]),_v(" (i.e. on top of the repo-level "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ignoreGlobList")]),_v(") folders/files to ignore for a specific author. The path glob syntax is specified by the "),_c('a',{attrs:{"href":"https://docs.oracle.com/javase/tutorial/essential/io/fileOps.html#glob"}},[_c('em',[_v("glob format")])]),_v(". In the example above, the actual "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ignoreGlobList")]),_v(" for "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("alice")]),_v(" would be "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("[\"about-us/**\", \"**index.html\", \"**.css\"]")]),_v(".")])]),_v(" "),_c('p',[_v("To verify your standalone configuration is as intended, add the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("_reposense/config.json")]),_v(" to your local copy of repo and run RepoSense against it as follows:"),_c('br')]),_v(" "),_c('ul',[_c('li',[_v("Format: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar --repo LOCAL_REPO_LOCATION")]),_v(" "),_c('br')]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar --repo c:/myRepose/foo/bar")]),_c('br'),_v("\nAfter that, view the report to see if the configuration you specified in the config file is being reflected correctly in the report.")])]),_v(" "),_c('h2',{attrs:{"id":"a-note-about-git-author-name"}},[_v("A note about git author name"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#a-note-about-git-author-name","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Git Author Name")]),_v(" refers to the customizable author's display name set in the local "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(".gitconfig")]),_v(" file. For example, in the Git Log's display:")]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"no-line-numbers hljs"}},[_c('span',[_v("...\n")]),_c('span',[_v("commit cd7f610e0becbdf331d5231887d8010a689f87c7\n")]),_c('span',[_v("Author: ConfiguredAuthorName \n")]),_c('span',[_v("Date: Fri Feb 9 19:14:41 2018 +0800\n")]),_c('span',[_v("\n")]),_c('span',[_v(" Make some changes to show my new author's name\n")]),_c('span',[_v("\n")]),_c('span',[_v("commit e3f699fd4ef128eebce98d5b4e5b3bb06a512f49\n")]),_c('span',[_v("Author: ActualGitHostId \n")]),_c('span',[_v("Date: Fri Feb 9 19:13:13 2018 +0800\n")]),_c('span',[_v("\n")]),_c('span',[_v(" Initial commit\n")]),_c('span',[_v(" ...\n")])])]),_c('p',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ActualGitHostId")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ConfiguredAuthorName")]),_v(" are both "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Git Author Name")]),_v(" of the same author."),_c('br'),_v("\nTo find the author name that you are currently using for your current git repository, run the following command within your git repository:")]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"no-line-numbers hljs"}},[_c('span',[_v("git config user.name\n")])])]),_c('p',[_v("To set the author name to the value you want (e.g., to set it to your GitHub username) for your current git repository, you can use the following command ("),_c('a',{attrs:{"href":"https://www.git-tower.com/learn/git/faq/change-author-name-email"}},[_v("more info")]),_v("):")]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"no-line-numbers hljs"}},[_c('span',[_v("git config user.name \"YOUR_AUTHOR_NAME”\n")])])]),_c('p',[_v("To set the author name to use a default value you want for future git repositories, you can use the following command:")]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"no-line-numbers hljs"}},[_c('span',[_v("git config --global user.name \"YOUR_AUTHOR_NAME”\n")])])]),_c('p',[_v("RepoSense expects the Git Author Name to be the same as author's username on the Git hosting platform (GitHub, GitLab, BitBucket). If an author's "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Git Author Name")]),_v(" is different from their username on the Git hosting platform, the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Git Author Name")]),_v(" needs to be specified in the standalone config file. If the author has more than one "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Git Author Name")]),_v(", multiple values can be entered too.")]),_v(" "),_c('box',{attrs:{"type":"warning","seamless":""}},[_c('p',[_v("Note: Symbols such as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("\"")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("!")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("/")]),_v(" etc. in your author name will be omitted, which may reduce the accuracy of the analysis if 2 names in the repository are approximately similar.")])])],1),_v(" "),_c('div',{attrs:{"id":"section-blurbs"}},[_c('h2',{attrs:{"id":"blurbs-md"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("blurbs.md")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#blurbs-md","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("You can optionally use "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("blurbs.md")]),_v(" to add blurbs in Markdown syntax for repository branches. These blurbs will be seen when grouping by "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repo/Branch")]),_v(". ("),_c('a',{attrs:{"href":"https://github.com/reposense/RepoSense/blob/master/docs/ug/blurbs.md"}},[_v("example")]),_v(")")]),_v(" "),_c('p',[_c('strong',[_v("Format")]),_v(":")]),_v(" "),_c('ul',[_c('li',[_v("First line in section: Link to the repository branch.")]),_v(" "),_c('li',[_v("Second line onwards: Blurb content.")]),_v(" "),_c('li',[_v("Delimiter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("")]),_v(". Everything on the line after the delimiter will be ignored.")])])])],1)])],1),_v(" "),_c('p')]),_v(" "),_c('p',[_c('span',{staticClass:"badge bg-dark bigger-level0"},[_v("Step 4")]),_v(" "),_c('strong',[_v("View the generated report:")])]),_v(" "),_c('p',[_v("To access your regenerated RepoSense report, go to the settings of your fork in GitHub, under "),_c('strong',[_v("GitHub Pages")]),_v(" section, look for "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Your site is published at [LINK]")]),_v(". It should look something like "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://[YOUR_GITHUB_ID].github.io/publish-RepoSense")]),_v(".\n"),_c('a',{attrs:{"href":"/RepoSense/images/publishingguide-githubsetting.jpg","target":"_self"}},[_c('img',{staticClass:"img-fluid",attrs:{"src":"/RepoSense/images/publishingguide-githubsetting.jpg","alt":"GitHub Setting","title":"GitHub Setting"}})])]),_v(" "),_c('box',{attrs:{"type":"tip","seamless":""}},[_c('p',[_v("There is also a published GitHub Action ("),_c('a',{attrs:{"href":"https://github.com/marketplace/actions/reposense-action"}},[_v("reposense-action")]),_v(") that can be used to generate and publish RepoSense reports. It is especially convenient for users who wish to skip the forking and setting up of a separate repository. For more information, refer to the "),_c('a',{attrs:{"href":"https://github.com/marketplace/actions/reposense-action#usage"}},[_v("usage description")]),_v(".")])])],1)])],1),_v(" "),_c('p'),_v(" "),_c('div',{staticClass:"indented-level0"},[_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('span',[_c('span',{staticClass:"glyphicon glyphicon-log-in",attrs:{"aria-hidden":"true"}})]),_v(" Appendix: "),_c('strong',[_v("Using RepoSense with Travis → Setting up")])])]},proxy:true}])},[_v(" "),_c('div',[_c('div',{staticClass:"lead"},[_c('p',[_v("You can use the CI tool Travis to automate generating and publishing of RepoSense reports.")])]),_v(" "),_c('h2',{attrs:{"id":"setting-up-3"}},[_v("Setting up"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#setting-up-3","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{attrs:{"id":"section-fork-token"}},[_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("The instructions below assume you are using GitHub pages to host your report.")])]),_v(" "),_c('p',[_c('span',{staticClass:"badge bg-dark bigger-level0"},[_v("Step 1")]),_v(" "),_c('strong',[_v("Fork the "),_c('em',[_v("publish-RepoSense")]),_v(" repository")]),_v(" using this "),_c('a',{attrs:{"href":"https://github.com/RepoSense/publish-RepoSense/fork"}},[_v("link")]),_v(". Optionally, you can rename the fork to match your RepoSense report e.g., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("project-code-dashboard")]),_v(".")])],1),_v(" "),_c('p',[_c('span',{staticClass:"badge bg-dark bigger-level0"},[_v("Step 2")]),_v(" "),_c('strong',[_v("Generate a "),_c('em',[_v("personal access token")]),_v(" or "),_c('em',[_v("deploy key")]),_v(" on GitHub")]),_v(" as explained in the panel below.")]),_v(" "),_c('div',{staticClass:"indented-level0"},[_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('span',[_c('span',{staticClass:"glyphicon glyphicon-log-in",attrs:{"aria-hidden":"true"}})]),_v(" Granting write access on GitHub")])]},proxy:true}])},[_v(" "),_c('div',[_c('h2',{attrs:{"id":"granting-write-access-to-a-repository"}},[_v("Granting write-access to a repository"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#granting-write-access-to-a-repository","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("We recommend using a "),_c('a',{attrs:{"href":"https://github.blog/2013-05-16-personal-api-tokens/"}},[_v("personal access token")]),_v(" if aiming for the ease of setup and "),_c('a',{attrs:{"href":"https://developer.github.com/v3/guides/managing-deploy-keys/#deploy-keys"}},[_v("deploy key")]),_v(" if aiming for enhanced security.")]),_v(" "),_c('h3',{attrs:{"id":"if-you-wish-to-use-personal-access-token"}},[_v("If you wish to use "),_c('em',[_v("personal access token")]),_v(":"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#if-you-wish-to-use-personal-access-token","onclick":"event.stopPropagation()"}})]),_v(" "),_c('ol',[_c('li',[_c('strong',[_v("Create a "),_c('em',[_v("personal access token")])]),_v(" by following this "),_c('a',{attrs:{"href":"https://help.github.com/articles/creating-a-personal-access-token-for-the-command-line/"}},[_v("guide")]),_v(" and give only "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("public_repo")]),_v(" permission.")]),_v(" "),_c('li',[_c('strong',[_v("Copy the token")]),_v(" for later use.")])]),_v(" "),_c('h3',{attrs:{"id":"if-you-wish-to-use-deploy-key"}},[_v("If you wish to use "),_c('em',[_v("deploy key")]),_v(":"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#if-you-wish-to-use-deploy-key","onclick":"event.stopPropagation()"}})]),_v(" "),_c('box',{attrs:{"type":"info"},scopedSlots:_u([{key:"icon",fn:function(){return [_c('span',{staticClass:"fab fa-windows",attrs:{"aria-hidden":"true"}})]},proxy:true}])},[_v(" "),_c('p',[_v("[Windows users] "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ssh-keygen")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("base64")]),_v(" are accessible using "),_c('a',{attrs:{"href":"https://gitforwindows.org/"}},[_v("Git Bash")]),_v(".")])]),_v(" "),_c('ol',[_c('li',[_c('strong',[_v("Create a public-private key pair")]),_v(" (without a passphrase) using the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ssh-keygen")]),_v(". "),_c('br'),_v("\ni.e., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ssh-keygen -t ecdsa -b 521 -f id_reposense -q -N \"\"")])]),_v(" "),_c('li',[_c('strong',[_v("Create a deploy key")]),_v(" as follows:\n"),_c('ol',[_c('li',[_v("Go to the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("settings")]),_v(" page of your publish-RepoSense fork")]),_v(" "),_c('li',[_v("Click on the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Deploy keys")]),_v(" item in the navigation menu in that page")]),_v(" "),_c('li',[_v("Click on the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Add deploy key")]),_v(" button and create a new deploy key with the contents of "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("id_reposense.pub")]),_v(".")])])]),_v(" "),_c('li',[_c('strong',[_v("Copy the private key")]),_v(" in base64 encoded format for later use. "),_c('br'),_v("\ni.e., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("cat id_reposense | base64 -w 0")])])])],1)])],1),_v(" "),_c('p'),_v(" "),_c('p',[_c('span',{staticClass:"badge bg-dark bigger-level0"},[_v("Step 3")]),_v(" "),_c('strong',[_v("Login to "),_c('a',{attrs:{"href":"https://travis-ci.org/"}},[_v("Travis-CI")]),_v(".")]),_v(" You may have to sign up first.")]),_v(" "),_c('p',[_c('span',{staticClass:"badge bg-dark bigger-level0"},[_v("Step 4")]),_v(" "),_c('strong',[_v("Sync your Travis account with GitHub:")])]),_v(" "),_c('ol',[_c('li',[_v("Go to "),_c('a',{attrs:{"href":"https://travis-ci.org/account/repositories"}},[_v("your account")]),_v(".")]),_v(" "),_c('li',[_v("Click on "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Sync account")]),_v(" to fetch all your repositories into Travis-CI.")])]),_v(" "),_c('p',[_c('span',{staticClass:"badge bg-dark bigger-level0"},[_v("Step 5")]),_v(" "),_c('strong',[_v("Activate the repository:")])]),_v(" "),_c('ol',[_c('li',[_v("Go to your "),_c('a',{attrs:{"href":"https://travis-ci.org/search/publish-RepoSense/"}},[_v("publish-RepoSense fork in Travis-CI")])]),_v(" "),_c('li',[_v("Under "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Current")]),_v(" tab, click on "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Activate repository")]),_v(".")])]),_v(" "),_c('p',[_c('span',{staticClass:"badge bg-dark bigger-level0"},[_v("Step 6")]),_v(" "),_c('strong',[_v("Set the token/key:")])]),_v(" "),_c('ol',[_c('li',[_v("In the same page, click on "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("More options")]),_v(" on the right.")]),_v(" "),_c('li',[_v("Then, click on the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Settings")]),_v(" option:"),_c('br'),_v(" "),_c('a',{attrs:{"href":"/RepoSense/images/publishingguide-travissetting.jpg","target":"_self"}},[_c('img',{staticClass:"img-fluid",attrs:{"src":"/RepoSense/images/publishingguide-travissetting.jpg","alt":"Travis-CI Dashboard","title":"Travis-CI Dashboard"}})])]),_v(" "),_c('li',[_v("Under "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Environment Variables")]),_v(", name a variable as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("GITHUB_TOKEN")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("GITHUB_DEPLOY_KEY")]),_v(" depending on your earlier choice and paste the token/key into its value field; then click "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Add")]),_v(".")]),_v(" "),_c('li',[_v("Ensure that the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Display value in build log")]),_v(" is "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("switched off")]),_v(" for security reasons:"),_c('br'),_v(" "),_c('a',{attrs:{"href":"/RepoSense/images/publishingguide-githubtoken.jpg","target":"_self"}},[_c('img',{staticClass:"img-fluid",attrs:{"src":"/RepoSense/images/publishingguide-githubtoken.jpg","alt":"Travis-CI Environment Variable","title":"Travis-CI Environment Variable"}})])])]),_v(" "),_c('p',[_c('span',{staticClass:"badge bg-dark bigger-level0"},[_v("Step 7")]),_v(" "),_c('strong',[_v("Update the report configuration:")])]),_v(" "),_c('span',{attrs:{"id":"section-edit-configs"}},[_c('p',[_v("In your fork, edit "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("run.sh")]),_v(" (and if applicable, "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("group-config.csv")]),_v(") to customize the command line parameters or repositories to be analyzed.")]),_v(" "),_c('div',{staticClass:"indented-level0"},[_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('span',[_c('span',{staticClass:"glyphicon glyphicon-log-in",attrs:{"aria-hidden":"true"}})]),_v(" Appendix: "),_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("run.sh")]),_v(" format")])])]},proxy:true}])},[_v(" "),_c('div',[_c('h1',{staticClass:"display-4",attrs:{"id":"appendix-run-sh-format-2"}},[_c('span',[_v("Appendix: run.sh format")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#appendix-run-sh-format-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{staticClass:"lead"},[_c('p',[_c('a',{attrs:{"href":"https://github.com/reposense/publish-RepoSense/blob/master/run.sh"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("run.sh")])]),_v(" is a script used for automating RepoSense report generation.")])]),_v(" "),_c('h3',{attrs:{"id":"customizing-the-reposense-command-2"}},[_v("Customizing the RepoSense command"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#customizing-the-reposense-command-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("You can update the RepoSense command (i.e., the last line) in the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("run.sh")]),_v(" to match your needs.")]),_v(" "),_c('div',{staticClass:"indented-level0"},[_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('span',[_c('span',{staticClass:"glyphicon glyphicon-log-in",attrs:{"aria-hidden":"true"}})]),_v(" Appendix: "),_c('strong',[_v("CLI syntax reference")])])]},proxy:true}])},[_v(" "),_c('div',[_c('h1',{staticClass:"display-4",attrs:{"id":"appendix-cli-syntax-reference-2"}},[_c('span',[_v("Appendix: CLI syntax reference")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#appendix-cli-syntax-reference-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{staticClass:"lead"},[_c('p',[_v("The command "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar")]),_v(" takes several flags.")])]),_v(" "),_c('box',[_c('p',[_c('strong',[_v("Examples")]),_v(":")]),_v(" "),_c('p',[_v("An example of a command using most parameters:"),_c('br'),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar --repos https://github.com/reposense/RepoSense.git --output ./report_folder --since 31/1/2017 --until 31/12/2018 --formats java adoc xml --view --ignore-standalone-config --last-modified-date --timezone UTC+08 --find-previous-authors --analyze-authorship --originality-threshold 0.66")])]),_v(" "),_c('p',[_v("Same command as above but using most parameters in alias format:"),_c('br'),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar -r https://github.com/reposense/RepoSense.git -o ./report_folder -s 31/1/2017 -u 31/12/2018 -f java adoc xml -v -i -l -t UTC+08 -F -A -ot 0.66")])])]),_v(" "),_c('p',[_v("The section below provides explanations for each of the flags.")]),_v(" "),_c('h3',{attrs:{"id":"analyze-authorship-a-2"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--analyze-authorship")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-A")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#analyze-authorship-a-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--analyze-authorship")])]),_v(": Performs further analysis to distinguish between partial and full credit attribution for\nlines of code assigned to the author.")]),_v(" "),_c('ul',[_c('li',[_v("Default: this feature is turned "),_c('em',[_c('strong',[_v("off")])]),_v(" by default and the author will receive partial credits for all lines of\ncode, as the code lines are at least partial credit but may not qualify for full credit.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-A")]),_v(" (upper case)")]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--analyze-authorship")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-A")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("A darker background colour represents full credit, while a lighter background colour represents partial credit.")]),_v(" "),_c('p',[_v("If the code is attributed to a different author by the user via "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("@@author")]),_v(" tag, then the new author will be given\npartial credit.")])]),_v(" "),_c('h3',{attrs:{"id":"assets-a-2"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--assets")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-a")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#assets-a-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{attrs:{"id":"section-assets"}},[_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--assets ASSETS_DIRECTORY")])]),_v(": Specifies where to place assets for report generation.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ASSETS_DIRECTORY")]),_v(" The directory containing the assets files. A "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("favicon.ico")]),_v(" file can be placed here to customize the favicon of the dashboard, while a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("title.md")]),_v(" file can be placed to customize the "),_c('a',{attrs:{"href":"https://reposense.org/ug/customizingReports.html#add-a-title"}},[_v("title")]),_v(" of the report using "),_c('a',{attrs:{"href":"https://www.markdownguide.org/basic-syntax/"}},[_v("Markdown syntax")]),_v(".")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-a")])]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--assets ./assets")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-a ./assets")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("If "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--assets")]),_v(" is not specified, RepoSense looks for assets in the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./assets")]),_v(" directory.")])])])],1),_v(" "),_c('h3',{attrs:{"id":"config-c-2"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--config")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-c")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#config-c-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{attrs:{"id":"section-config"}},[_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--config CONFIG_DIRECTORY")])]),_v(": Specifies that config files located in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("CONFIG_DIRECTORY")]),_v(" should be used to customize the report.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("CONFIG_DIRECTORY")]),_v(" The directory containing the config files. Should contain a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(" file. Optionally, can contain an "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(" file or/and a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("group-config.csv")]),_v(" file or/and a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("report-config.json")]),_v(" file or/and a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("blurbs.md")]),_v(" file.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-c")])]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar --config ./config")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("Cannot be used with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repos")]),_v(". The "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repos")]),_v(" flag will take precedence over this flag.")]),_v(" "),_c('li',[_v("If both "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repos")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--config")]),_v(" are not specified, RepoSense looks for config files in the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./config")]),_v(" directory.")]),_v(" "),_c('li',[_v("Config files must follow "),_c('a',{attrs:{"href":"/RepoSense/ug/configFiles.html"}},[_v("this")]),_v(" format.")])])])],1),_v(" "),_c('h3',{attrs:{"id":"formats-f-2"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--formats")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-f")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#formats-f-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--formats LIST_OF_FORMATS")])]),_v(": Specifies which file extensions to be included in the analysis.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("LIST_OF_FORMATS")]),_v(" A space-separated list of file extensions that should be included in the analysis."),_c('br'),_v("\nDefault: all file formats")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-f")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--formats css fxml gradle")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-f css fxml gradle")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Binary file formats, such as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("jpg")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("png")]),_v(","),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("exe")]),_v(","),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("zip")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("rar")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("docx")]),_v(", and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("pptx")]),_v(", all will be labelled as the file type "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("binary")]),_v(" in the generated report.")])]),_v(" "),_c('h3',{attrs:{"id":"find-previous-authors-f-2"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--find-previous-authors")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-F")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#find-previous-authors-f-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--find-previous-authors")])]),_v(": Utilizes Git blame's ignore revisions functionality, RepoSense will attempt to blame the line changes caused by commits in the ignore commit list to the previous authors who altered those lines (if available).")]),_v(" "),_c('ul',[_c('li',[_v("Default: RepoSense will assume that no authors are responsible for the code changes in the lines altered by commits in the ignore commit list.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-F")]),_v(" (uppercase F)")]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--find-previous-authors")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-F")])])]),_v(" "),_c('h3',{attrs:{"id":"help-h-2"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--help")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-h")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#help-h-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--help")])]),_v(": Shows the help message.")]),_v(" "),_c('ul',[_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-h")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Cannot be used with any other flags. This flag takes precedence over all other flags.")])]),_v(" "),_c('h3',{attrs:{"id":"ignore-standalone-config-i-2"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--ignore-standalone-config")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-i")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#ignore-standalone-config-i-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--ignore-standalone-config")])]),_v(": Specifies that the standalone config file in the repo should be ignored.")]),_v(" "),_c('ul',[_c('li',[_v("Default: the standalone config file is not ignored")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-i")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--ignore-standalone-config")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-i")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("This flag overrides the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Ignore standalone config")]),_v(" field in the CSV config file.")])]),_v(" "),_c('h3',{attrs:{"id":"ignore-filesize-limit-i-2"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--ignore-filesize-limit")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-I")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#ignore-filesize-limit-i-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--ignore-filesize-limit")])]),_v(": Specifies that the file size limit (both default and user-defined) should be ignored during the analysis.")]),_v(" "),_c('ul',[_c('li',[_v("Default: the file size limit is not ignored")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-I")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--ignore-filesize-limit")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-I")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("All files are subject to a default file size limit or a custom size limit set by the user. Most files should not be\naffected by the default size limit. This flag can be useful for including files in your report that are affected by\nthe size limit. Note that this flag may result in large report sizes and/or slower report generation.")])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("This flag overrides the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Ignore file size limit")]),_v(" field in the CSV config file.")])]),_v(" "),_c('h3',{attrs:{"id":"last-modified-date-l-2"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--last-modified-date")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-l")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#last-modified-date-l-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--last-modified-date")])]),_v(": Specifies that the last modified date of each line of code should be added to "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("authorship.json")]),_v(".")]),_v(" "),_c('ul',[_c('li',[_v("Default: the last modified date of each line of code will not be added to "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("authorship.json")])]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-l")]),_v(" (lowercase L)")]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--last-modified-date")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-l")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("Cannot be used with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--shallow-cloning")]),_v(". This may result in an incorrect last modified date.")]),_v(" "),_c('li',[_v("The last modified dates will be in the same timezone specified with the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--timezone")]),_v(" flag.")])])]),_v(" "),_c('h3',{attrs:{"id":"originality-threshold-ot-2"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--originality-threshold")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-ot")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#originality-threshold-ot-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--originality-threshold [VALUE]")])]),_v(": Specifies the cut-off point for partial and full credit\nin "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--analyze-authorship")]),_v(". Author will be given full credit if their contribution exceeds this threshold, else partial\ncredit is given.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("VALUE")]),_v(" Optional. Acceptable range: [0.0, 1.0]."),_c('br'),_v("\nDefault: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("0.51")])]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-ot")])]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--originality-threshold 0.66")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-ot 0.66")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("Requires "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--analyze-authorship")]),_v(" flag.")]),_v(" "),_c('li',[_v("An author's contribution, or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("originality score")]),_v(", is calculated using Levenshtein Distance (Edit Distance) algorithm.\nWe compare the difference between current code line and its previous versions.")])])]),_v(" "),_c('h3',{attrs:{"id":"output-o-2"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--output")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-o")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#output-o-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--output OUTPUT_DIRECTORY")])]),_v(": Indicates where to save the report generated.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("OUTPUT_DIRECTORY")]),_v(" The location for the generated "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("reposense-report")]),_v(" folder."),_c('br'),_v("\nDefault: current directory")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-o")])]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--output ./foo")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-o ./foo")]),_v(" (the report will be in the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./foo/reposense-report")]),_v(" folder)")])]),_v(" "),_c('h3',{attrs:{"id":"period-p-2"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--period")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-p")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#period-p-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--period PERIOD")])]),_v(": Specifies the period of analysis window.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("PERIOD")]),_v(" The period of analysis window, in the format "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("nd")]),_v(" (for n days) or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("nw")]),_v(" (for n weeks). It is used to calculate end date if only start date is specified, or calculate end date if only start date is specified.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-p")])]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--period 30d")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--period 4w")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("If both start date and end date are not specified, the date of generating the report will be taken as the end date.")]),_v(" "),_c('li',[_v("May analyze the incorrect date range if used with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since d1")]),_v(". The program will throw a warning.")]),_v(" "),_c('li',[_v("Cannot be used with both "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--until")]),_v(". The program will throw an exception.")])])]),_v(" "),_c('h3',{attrs:{"id":"repo-repos-r-2"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repo")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repos")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-r")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#repo-repos-r-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repo REPO_LOCATION")])]),_v(": Specifies which repositories to analyze.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("REPO_LOCATION")]),_v(" A list of URLs or the disk location of the git repositories to analyze, separated by spaces.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-r")])]),_v(" "),_c('li',[_v("Examples:\n"),_c('ul',[_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repos https://github.com/reposense/RepoSense.git")])]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repo https://github.com/reposense/RepoSense.git c:/myRepose/foo/bar")]),_v(": analyzes the two specified repos (one remote, one local) and generates one report containing details of both.")])])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Cannot be used with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--config")]),_v(". This flag takes precedence over "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--config")]),_v(".")])]),_v(" "),_c('h3',{attrs:{"id":"shallow-cloning-s-2"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--shallow-cloning")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-S")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#shallow-cloning-s-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--shallow-cloning")])]),_v(": Clones repositories using Git's shallow cloning functionality, which can significantly reduce the time taken to clone large repositories. However, the flag should not be used for smaller repositories where the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(".git")]),_v(" file is smaller than 500 MB, as it would create overhead.")]),_v(" "),_c('ul',[_c('li',[_v("Default: RepoSense does not clone repositories using Git's shallow cloning functionality.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-S")]),_v(" (uppercase S)")]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--shallow-cloning")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-S")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Cannot be used with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--last-modified-date")]),_v(". This may result in an incorrect last modified date.")])]),_v(" "),_c('h3',{attrs:{"id":"since-s-2"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-s")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#since-s-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since START_DATE")])]),_v(": Specifies the start date for the period to be analyzed.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("START_DATE")]),_v(" The first day of the period to be analyzed, in the format "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("DD/MM/YYYY")]),_v("."),_c('br'),_v("\nDefault: one month before the current date")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-s")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since 21/10/2017")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-s 21/10/2017")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("If the start date is not specified, only commits made one month before the end date (if specified) or the date of generating the report, will be captured and analyzed.")]),_v(" "),_c('li',[_v("If "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("d1")]),_v(" is specified as the start date ("),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since d1")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-s d1")]),_v("), then the program will search for the earliest commit date of all repositories and use that as the start date.")]),_v(" "),_c('li',[_v("If "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("d1")]),_v(" is specified together with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--period")]),_v(", then the program will warn that the date range being analyzed may be incorrect.")])])]),_v(" "),_c('h3',{attrs:{"id":"timezone-t-2"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--timezone")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-t")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#timezone-t-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--timezone ZONE_ID")])]),_v(": Indicates the timezone to be used for the analysis.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ZONE_ID")]),_v(" The timezone in the format "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ZONE_ID[±hh[mm]]")]),_v("."),_c('br'),_v("\nDefault: system's default timezone")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-t")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--timezone UTC+08")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-t UTC-1030")])])]),_v(" "),_c('h3',{attrs:{"id":"until-u-2"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--until")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-u")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#until-u-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--until END_DATE")])]),_v(": Specifies the end date of the analysis period.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("END_DATE")]),_v(" The last date of the period to be analyzed, in the format "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("DD/MM/YYYY")]),_v("."),_c('br'),_v("\nDefault: current date")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-u")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--until 21/10/2017")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-u 21/10/2017")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Note: If the end date is not specified, the date of generating the report will be taken as the end date.")])]),_v(" "),_c('h3',{attrs:{"id":"version-v-2"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--version")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-V")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#version-v-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--version")])]),_v(": Shows the version of RepoSense.")]),_v(" "),_c('ul',[_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-V")]),_v(" (upper case)")])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Cannot be used with any other flags. This flag takes precedence over all other flags other than "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--help")]),_v(".")])]),_v(" "),_c('h3',{attrs:{"id":"view-v-2"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--view")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-v")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#view-v-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--view [REPORT_FOLDER]")])]),_v(": Specifies that the report should be opened in the default browser.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("REPORT_FOLDER")]),_v(" Optional. If specified, no analysis will be performed and the report specified by the argument will be opened."),_c('br'),_v("\nDefault: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./reposense-report")])]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-v")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--view")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-v")])])])],1)])],1),_v(" "),_c('p'),_v(" "),_c('h3',{attrs:{"id":"specifying-which-version-of-reposense-to-use-2"}},[_v("Specifying which version of RepoSense to use"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#specifying-which-version-of-reposense-to-use-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Depending on which version you wish to use for report generation, add one of the following flags to the line "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./get-reposense.py")]),_v(" in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("run.sh")]),_v(" (e.g., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./get-reposense.py --release")]),_v("):")]),_v(" "),_c('ul',[_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--release")]),_v(": Use the latest release (Stable)")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--master")]),_v(": Use the latest version of the master branch")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--tag TAG")]),_v(" (e.g. "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--tag v1.6.1")]),_v("): Use the version identified by the Git tag given")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--commit COMMIT")]),_v(" (e.g. "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--commit abc123")]),_v("): Use the version identified by the Git commit SHA given")])])])])],1),_v(" "),_c('p'),_v(" "),_c('div',{staticClass:"indented-level0"},[_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('span',[_c('span',{staticClass:"glyphicon glyphicon-log-in",attrs:{"aria-hidden":"true"}})]),_v(" Appendix: "),_c('strong',[_v("Config files format")])])]},proxy:true}])},[_v(" "),_c('div',[_c('h1',{staticClass:"display-4",attrs:{"id":"appendix-config-files-format-2"}},[_c('span',[_v("Appendix: Config files format")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#appendix-config-files-format-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{staticClass:"lead"},[_c('p',[_v("Given below are the details of the various config files used by RepoSense.")])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_c('strong',[_v("RepoSense ignores the order of column headers in the CSV config files. However, the spelling of the column headers must match the specified headers exactly, or the column would be ignored by RepoSense.")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_c('strong',[_v("A value in a config file is optional to provide unless it is specified as "),_c('span',{staticClass:"badge bg-danger"},[_v("mandatory")])]),_v(".")])]),_v(" "),_c('h2',{attrs:{"id":"repo-config-csv-2"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#repo-config-csv-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(" file contains repo-level config data.")]),_v(" Each row represents a repository's configuration ("),_c('a',{attrs:{"href":"/RepoSense/ug/repo-config.csv"}},[_v("example")]),_v(").")]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Column Name")]),_v(" "),_c('th',[_v("Explanation")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_v("Repository's Location "),_c('span',{staticClass:"badge bg-danger"},[_v("mandatory")])]),_v(" "),_c('td',[_v("The "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Remote Repo URL")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Disk Path")]),_v(" to the git repository e.g., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://github.com/foo/bar.git")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("C:\\Users\\user\\Desktop\\GitHub\\foo\\bar")])])]),_v(" "),_c('tr',[_c('td',[_v("Branch")]),_v(" "),_c('td',[_v("The branch to analyze in the target repository e.g., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("master")]),_v(". Default: the default branch of the repo")])]),_v(" "),_c('tr',[_c('td',[_v("File formats"),_c('sup',[_v("*+")])]),_v(" "),_c('td',[_v("The file extensions to analyze. Binary file formats, such as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("png")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("jpg")]),_v(", will be automatically labelled as the file type "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("binary")]),_v(" in the generated report. Default: all file formats")])]),_v(" "),_c('tr',[_c('td',[_v("Find Previous Authors")]),_v(" "),_c('td',[_v("Enter "),_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("yes")])]),_v(" to utilize Git blame's ignore revisions functionality, RepoSense will attempt to blame the line changes caused by commits in the ignore commit list to the previous authors who altered those lines (if available).")])]),_v(" "),_c('tr',[_c('td',[_v("Ignore Glob List"),_c('sup',[_v("*+")])]),_v(" "),_c('td',[_v("The list of file path globs to ignore during analysis for each author e.g., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("test/**;temp/**")]),_v(". Refer to the "),_c('a',{attrs:{"href":"https://docs.oracle.com/javase/tutorial/essential/io/fileOps.html#glob"}},[_c('em',[_v("glob format")])]),_v(" for the path glob syntax.")])]),_v(" "),_c('tr',[_c('td',[_v("Ignore standalone config")]),_v(" "),_c('td',[_v("To ignore the standalone config file (if any) in target repository, enter "),_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("yes")])]),_v(". If the cell is empty, the standalone config file in the repo (if any) will take precedence over configurations provided in the csv files.")])]),_v(" "),_c('tr',[_c('td',[_v("Ignore Commits List"),_c('sup',[_v("*+")])]),_v(" "),_c('td',[_v("The list of commits to ignore during analysis. For accurate results, the commits should be provided with their full hash. Additionally, a range of commits can be specified using the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("..")]),_v(" notation e.g. "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("abc123..def456")]),_v(" (both inclusive).")])]),_v(" "),_c('tr',[_c('td',[_v("Ignore Authors List"),_c('sup',[_v("*+")])]),_v(" "),_c('td',[_v("The list of authors to ignore during analysis. Authors should be specified by their "),_c('a',{attrs:{"href":"#a-note-about-git-author-name"}},[_v("Git Author Name")]),_v(".")])]),_v(" "),_c('tr',[_c('td',[_v("Shallow Cloning")]),_v(" "),_c('td',[_v("Enter "),_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("yes")])]),_v(" to clone the repository using Git's shallow cloning functionality. This option can significantly reduce the time taken to clone large repositories. However, the option should ideally be disabled for smaller repositories where the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(".git")]),_v(" file is smaller than 500 MB, as it would create overhead.")])]),_v(" "),_c('tr',[_c('td',[_v("File Size Limit"),_c('sup',[_v("+")])]),_v(" "),_c('td',[_v("Enter a file size limit for the repository in bytes as a single number without units (for a size limit of 1MB for example, enter 1000000). This file size limit will override the default file size limit (500KB). Files exceeding the file size limit will be marked as ignored and only the file name and line count will be reflected in the report.")])]),_v(" "),_c('tr',[_c('td',[_v("Ignore File Size Limit")]),_v(" "),_c('td',[_v("Enter "),_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("yes")])]),_v(" to ignore both the default file size limit and the file size limit possibly set by the user in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(".")])]),_v(" "),_c('tr',[_c('td',[_v("Skip Ignored File Analysis")]),_v(" "),_c('td',[_v("Enter "),_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("yes")])]),_v(" to ignore analysis of files exceeding the file size limit entirely. If file analysis is skipped, all information about the file will be omitted from the generated report. This option can significantly improve report generation time.")])])])])]),_c('box',{attrs:{"type":"info","seamless":""}},[_v("\nThe Shallow Cloning option is incompatible with the \"--last-modified-date\" CLI flag.\n")]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_v("\nIf Ignore File Size Limit is yes, the File Size Limit and Skip Ignored File Analysis columns are ignored.\n")]),_v(" "),_c('p',[_c('sup',[_v("* "),_c('strong',[_v("Multi-value column")]),_v(": multiple values can be entered in this column using a semicolon "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(";")]),_v(" as the separator.")]),_c('br'),_v(" "),_c('sup',[_v("+ "),_c('strong',[_v("Overrideable column")]),_v(": prepend with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("override:")]),_v(" to use entered value(s) instead of value(s) from standalone config.")])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("When using "),_c('a',{attrs:{"href":"#config-json-standalone-config-file"}},[_v("standalone config")]),_v(" (if it is not ignored), it is possible to override specific values from the standalone config by prepending the entered value with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("override:")]),_v(".")])]),_v(" "),_c('h2',{attrs:{"id":"author-config-csv-2"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#author-config-csv-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Optionally, you can use an "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(" (which should be in the same directory as the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(" file) to provide more details about the authors to analyze ("),_c('a',{attrs:{"href":"/RepoSense/ug/author-config.csv"}},[_v("example")]),_v("). It should contain the following columns:")]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Column Name")]),_v(" "),_c('th',[_v("Explanation")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_v("Repository's Location"),_c('sup',[_v("*")])]),_v(" "),_c('td',[_v("Same as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(". Default: all the repos in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(".")])]),_v(" "),_c('tr',[_c('td',[_v("Branch")]),_v(" "),_c('td',[_v("The branch to analyze for this author, e.g., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("master")]),_v(". Default: the author will be bound to all the repos in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(" that has the same repo's location, regardless of branch.")])]),_v(" "),_c('tr',[_c('td',[_v("Author's Git Host ID"),_c('sup',[_v("#")]),_v(" "),_c('span',{staticClass:"badge bg-danger"},[_v("mandatory")])]),_v(" "),_c('td',[_v("Username of the target author's profile on GitHub, GitLab or Bitbucket, e.g."),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("JohnDoe")]),_v(".")])]),_v(" "),_c('tr',[_c('td',[_v("Author's Emails"),_c('sup',[_v("*")])]),_v(" "),_c('td',[_v("Associated emails of the author. For GitHub users, this can be found in your "),_c('a',{attrs:{"href":"https://github.com/settings/emails"}},[_v("GitHub settings")]),_v(".")])]),_v(" "),_c('tr',[_c('td',[_v("Author's Display Name")]),_v(" "),_c('td',[_v("The name to display for the author. Default: author's username.")])]),_v(" "),_c('tr',[_c('td',[_v("Author's Git Author Name"),_c('sup',[_v("*")])]),_v(" "),_c('td',[_v("The meaning of "),_c('em',[_v("Git Author Name")]),_v(" is explained in "),_c('a',{attrs:{"href":"#a-note-about-git-author-name"}},[_c('em',[_v("A note about git author name")])]),_v(".")])]),_v(" "),_c('tr',[_c('td',[_v("Ignore Glob List"),_c('sup',[_v("*")])]),_v(" "),_c('td',[_v("Files to ignore for this author, in addition to files ignored by the patterns specified in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(". The path glob syntax is the same as that of Ignore Glob List in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(".")])])])])]),_c('p',[_c('sup',[_v("* "),_c('strong',[_v("Multi-value column")]),_v(": multiple values can be entered in this column using a semicolon "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(";")]),_v(" as the separator.")]),_v(" "),_c('br'),_v(" "),_c('sup',[_v("# For backward compatibility, "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Author's GitHub ID")]),_v(" is still accepted as the header in place of "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Author's Git Host ID")]),_v(".")])]),_v(" "),_c('p',[_v("If "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(" is not given and the repo has not provided author details in a standalone config file, all the authors of the repositories within the date range specified (if any) will be analyzed.")]),_v(" "),_c('p',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(" has some advanced syntax that can help to reduce duplication of the author's information. The syntax guide is given below:")]),_v(" "),_c('div',{staticClass:"indented-level0"},[_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('span',[_c('span',{staticClass:"glyphicon glyphicon-log-in",attrs:{"aria-hidden":"true"}})]),_v(" Appendix: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(" advanced syntax")])]},proxy:true}])},[_v(" "),_c('div',[_c('h1',{staticClass:"display-4",attrs:{"id":"appendix-author-config-csv-advanced-syntax-2"}},[_c('span',[_v("Appendix: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(" advanced syntax")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#appendix-author-config-csv-advanced-syntax-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{staticClass:"lead"},[_c('p',[_v("Given below are the advanced syntax available for "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(".")])]),_v(" "),_c('h2',{attrs:{"id":"multiple-repository-s-location-per-author-2"}},[_v("Multiple "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repository's Location")]),_v(" per author"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#multiple-repository-s-location-per-author-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('h4',{attrs:{"id":"specifying-multiple-repository-s-location-2"}},[_v("Specifying multiple "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repository's Location")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#specifying-multiple-repository-s-location-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("To specify multiple "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repository's Location")]),_v(" in a single row, we can use a semicolon "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(";")]),_v(" as a separator.")]),_v(" "),_c('p',[_v("Below is an example:")]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Repository's Location")]),_v(" "),_c('th',[_v("Branch")]),_v(" "),_c('th',[_v("Author's Git Host ID")]),_v(" "),_c('th',[_v("... Hidden columns")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://github.com/reposense/RepoSense.git;https://github.com/MarkBind/markbind.git")])]),_v(" "),_c('td',[_v("master")]),_v(" "),_c('td',[_v("sikai00")]),_v(" "),_c('td',[_v("--")])])])])]),_c('p',[_v("We have now furnished author details for both repositories in a single row, instead of having two individual rows per "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repository's Location")]),_v(".")]),_v(" "),_c('br'),_v(" "),_c('h4',{attrs:{"id":"specifying-repository-s-location-with-one-or-more-specific-branches-2"}},[_v("Specifying "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repository's Location")]),_v(" with one or more specific branches"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#specifying-repository-s-location-with-one-or-more-specific-branches-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("To list out one or more branches for a particular "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repository's Location")]),_v(", we can use a pipe "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("|")]),_v(" separator to demarcate the different branches.")]),_v(" "),_c('p',[_v("Below is an example:")]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Repository's Location")]),_v(" "),_c('th',[_v("Branch")]),_v(" "),_c('th',[_v("Author's Git Host ID")]),_v(" "),_c('th',[_v("... Hidden columns")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://github.com/reposense/RepoSense.git~master|release|cypress")])]),_v(" "),_c('td',[_v("master")]),_v(" "),_c('td',[_v("sikai00")]),_v(" "),_c('td',[_v("--")])])])])]),_c('p',[_v("We have now provided author details for three different branches in a single repo, using a single row.")]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("The branch specified through the delimiter syntax will take precedence over the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Branch")]),_v(" column.")])]),_v(" "),_c('h2',{attrs:{"id":"using-github-branch-url-as-repository-s-location-2"}},[_v("Using GitHub branch URL as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repository's Location")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#using-github-branch-url-as-repository-s-location-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("We can also use GitHub branch URL as copied from the address bar directly, to be able to quickly use the URL to specify the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repository's Location")]),_v(" and a specific "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Branch")]),_v(" at the same time.")]),_v(" "),_c('p',[_v("Below is an example:")]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Repository's Location")]),_v(" "),_c('th',[_v("Branch")]),_v(" "),_c('th',[_v("Author's Git Host ID")]),_v(" "),_c('th',[_v("... Hidden columns")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://github.com/reposense/RepoSense/tree/release")])]),_v(" "),_c('td'),_v(" "),_c('td',[_v("sikai00")]),_v(" "),_c('td',[_v("--")])])])])]),_c('p',[_v("There is no need to specify the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Branch")]),_v(" column now, as we have specified it through the GitHub branch URL.")]),_v(" "),_c('box',{attrs:{"type":"warning","seamless":""}},[_c('p',[_v("GitLab and BitBucket branch URL are not supported at the moment.")])]),_v(" "),_c('h2',{attrs:{"id":"combining-the-advanced-syntax-2"}},[_v("Combining the advanced syntax"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#combining-the-advanced-syntax-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("It is possible to combine the above-mentioned advanced syntax. By doing so, we can go from:")]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Repository's Location")]),_v(" "),_c('th',[_v("Branch")]),_v(" "),_c('th',[_v("Author's Git Host ID")]),_v(" "),_c('th',[_v("... Hidden columns")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://github.com/MarkBind/markbind/tree/vue3-migration")])]),_v(" "),_c('td'),_v(" "),_c('td',[_v("sikai00")]),_v(" "),_c('td',[_v("--")])]),_v(" "),_c('tr',[_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://github.com/reposense/RepoSense.git")])]),_v(" "),_c('td',[_v("master")]),_v(" "),_c('td',[_v("sikai00")]),_v(" "),_c('td',[_v("--")])]),_v(" "),_c('tr',[_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://github.com/reposense/RepoSense.git")])]),_v(" "),_c('td',[_v("cypress")]),_v(" "),_c('td',[_v("sikai00")]),_v(" "),_c('td',[_v("--")])])])])]),_c('p',[_v("to:")]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Repository's Location")]),_v(" "),_c('th',[_v("Branch")]),_v(" "),_c('th',[_v("Author's Git Host ID")]),_v(" "),_c('th',[_v("... Hidden columns")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://github.com/MarkBind/markbind/tree/vue3-migration;https://github.com/reposense/RepoSense.git~master|cypress")])]),_v(" "),_c('td'),_v(" "),_c('td',[_v("sikai00")]),_v(" "),_c('td',[_v("--")])])])])]),_c('br')],1)])],1),_v(" "),_c('p'),_v(" "),_c('h2',{attrs:{"id":"group-config-csv-2"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("group-config.csv")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#group-config-csv-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Optionally, you can provide a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("group-config.csv")]),_v("(which should be in the same directory as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(" file) to provide details on any custom groupings for files in specified repositories ("),_c('a',{attrs:{"href":"/RepoSense/ug/group-config.csv"}},[_v("example")]),_v("). It should contain the following columns:")]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Column Name")]),_v(" "),_c('th',[_v("Explanation")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_v("Repository's Location")]),_v(" "),_c('td',[_v("Same as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(". Default: all the repos in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")])])]),_v(" "),_c('tr',[_c('td',[_v("Group Name "),_c('span',{staticClass:"badge bg-danger"},[_v("mandatory")])]),_v(" "),_c('td',[_v("Name of the group, e.g.,"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("test")]),_v(".")])]),_v(" "),_c('tr',[_c('td',[_v("Globs * "),_c('span',{staticClass:"badge bg-danger"},[_v("mandatory")])]),_v(" "),_c('td',[_v("The list of file path globs to include for specified group, e.g.,"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("**/test/*;**.java")]),_v(".")])])])])]),_c('p',[_c('sup',[_v("* "),_c('strong',[_v("Multi-value column")]),_v(": multiple values can be entered in this column using a semicolon "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(";")]),_v(" as the separator.")])]),_v(" "),_c('p',[_v("Note that a file in a given repository should only be tagged to one group. "),_c('br'),_v("\ne.g.: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("example.java")]),_v(" in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("example-repo")]),_v(" can either be in the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("test")]),_v(" group or the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("code")]),_v(" group, but not in both "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("test")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("code")]),_v(" group. If multiple groups are specified for a given file, the latter group (i.e., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("code")]),_v(" group) is set for the file.")]),_v(" "),_c('h2',{attrs:{"id":"report-config-json-2"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("report-config.json")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#report-config-json-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("You can optionally use "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("report-config.json")]),_v(" to customize report generation by providing the following information. ("),_c('a',{attrs:{"href":"/RepoSense/ug/report-config.json"}},[_v("example")]),_v(")")]),_v(" "),_c('p',[_c('strong',[_v("Fields to provide")]),_v(":")]),_v(" "),_c('ul',[_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("title")]),_v(": Title of the generated report, which is also the title of the deployed dashboard. Default: \"RepoSense Report\"")])]),_v(" "),_c('div',{attrs:{"id":"section-standalone"}},[_c('h2',{attrs:{"id":"config-json-standalone-config-file-2"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("config.json")]),_v(" (standalone config file)"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#config-json-standalone-config-file-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Repo owners can provide the following additional information to RepoSense using a config file that we call the "),_c('strong',[_c('em',[_v("standalone config file")])]),_v(":")]),_v(" "),_c('ul',[_c('li',[_v("which files/authors/commits to analyze/omit")]),_v(" "),_c('li',[_v("which git and git host usernames belong to which authors")]),_v(" "),_c('li',[_v("the display of an author")])]),_v(" "),_c('p',[_v("To use this feature, add a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("_reposense/config.json")]),_v(" to the root of your repo using the format in the example below ("),_c('a',{attrs:{"href":"https://github.com/reposense/RepoSense/blob/master/_reposense/config.json"}},[_v("another example")]),_v(") and "),_c('strong',[_v("commit it")]),_v(" (reason: RepoSense can see committed code only):")]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"no-line-numbers hljs json"}},[_c('span',[_v("{\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"ignoreGlobList\"")]),_v(": ["),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"about-us/**\"")]),_v(", "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"**index.html\"")]),_v("],\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"formats\"")]),_v(": ["),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"html\"")]),_v(", "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"css\"")]),_v("],\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"ignoreCommitList\"")]),_v(": ["),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"90018e49f129ce7e0abdc8b18e91c9813588c601\"")]),_v(", "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"67890def\"")]),_v(", "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"abc123..def456\"")]),_v("],\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"ignoreAuthorList\"")]),_v(": ["),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"charlie\"")]),_v("],\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"authors\"")]),_v(":\n")]),_c('span',[_v(" [\n")]),_c('span',[_v(" {\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"gitId\"")]),_v(": "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"alice\"")]),_v(",\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"emails\"")]),_v(": ["),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"alice@example.com\"")]),_v(", "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"alicet@example.com\"")]),_v("],\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"displayName\"")]),_v(": "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"Alice T.\"")]),_v(",\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"authorNames\"")]),_v(": ["),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"AT\"")]),_v(", "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"A\"")]),_v("],\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"ignoreGlobList\"")]),_v(": ["),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"**.css\"")]),_v("]\n")]),_c('span',[_v(" },\n")]),_c('span',[_v(" {\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"gitId\"")]),_v(": "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"bob\"")]),_v("\n")]),_c('span',[_v(" }\n")]),_c('span',[_v(" ]\n")]),_c('span',[_v("}\n")])])]),_c('p',[_v("Note: all fields are optional unless specified otherwise.")]),_v(" "),_c('p',[_c('strong',[_v("Fields to provide "),_c('em',[_v("repository-level")]),_v(" info")]),_v(":")]),_v(" "),_c('ul',[_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ignoreGlobList")]),_v(": Folders/files to ignore, specified using the "),_c('a',{attrs:{"href":"https://docs.oracle.com/javase/tutorial/essential/io/fileOps.html#glob"}},[_c('em',[_v("glob format")])]),_v(".")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("formats")]),_v(": File formats to analyze. Binary file formats, such as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("png")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("jpg")]),_v(", will be automatically labelled as the file type "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("binary")]),_v(" in the generated report. Default: all file formats")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ignoreCommitList")]),_v(": The list of commits to ignore during analysis. For accurate results, the commits should be provided with their full hash. Additionally, a range of commits can be specified using the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("..")]),_v(" notation e.g. "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("abc123..def456")]),_v(" (both inclusive).")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ignoreAuthorList")]),_v(": The list of authors to ignore during analysis. Authors specified in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("authors")]),_v(" field or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(" will be also be omitted if they are in this list. Authors should be specified by their "),_c('a',{attrs:{"href":"#a-note-about-git-author-name"}},[_v("Git Author Name")]),_v(".")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("fileSizeLimit")]),_v(": A file size limit for the repository in bytes as a single number without units, that will override the default file size limit. If not specified, the default file size limit will continue to be used.")])]),_v(" "),_c('p',[_c('strong',[_v("Fields to provide "),_c('em',[_v("author-level")]),_v(" info")]),_v(":"),_c('br'),_v("\nNote: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("authors")]),_v(" field should contain "),_c('em',[_v("all")]),_v(" authors that should be captured in the analysis.")]),_v(" "),_c('ul',[_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("gitId")]),_v(": Username of the author. "),_c('span',{staticClass:"badge bg-danger"},[_v("mandatory")]),_v(" field.")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("emails")]),_v(": Associated git emails of the author. For GitHub, this can be found in your "),_c('a',{attrs:{"href":"https://github.com/settings/emails"}},[_v("GitHub settings")]),_v(".")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("displayName")]),_v(": Name to display on the report for this author.")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("authorNames")]),_v(": Git Author Name(s) used in the author's commits. By default, RepoSense assumes an author would use their remote Git Host username as the Git username too. The meaning of "),_c('em',[_v("Git Author Name")]),_v(" is explained in "),_c('a',{attrs:{"href":"#a-note-about-git-author-name"}},[_c('em',[_v("A note about git author name")])]),_v(".")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ignoreGlobList")]),_v(": "),_c('em',[_v("Additional")]),_v(" (i.e. on top of the repo-level "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ignoreGlobList")]),_v(") folders/files to ignore for a specific author. The path glob syntax is specified by the "),_c('a',{attrs:{"href":"https://docs.oracle.com/javase/tutorial/essential/io/fileOps.html#glob"}},[_c('em',[_v("glob format")])]),_v(". In the example above, the actual "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ignoreGlobList")]),_v(" for "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("alice")]),_v(" would be "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("[\"about-us/**\", \"**index.html\", \"**.css\"]")]),_v(".")])]),_v(" "),_c('p',[_v("To verify your standalone configuration is as intended, add the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("_reposense/config.json")]),_v(" to your local copy of repo and run RepoSense against it as follows:"),_c('br')]),_v(" "),_c('ul',[_c('li',[_v("Format: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar --repo LOCAL_REPO_LOCATION")]),_v(" "),_c('br')]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar --repo c:/myRepose/foo/bar")]),_c('br'),_v("\nAfter that, view the report to see if the configuration you specified in the config file is being reflected correctly in the report.")])]),_v(" "),_c('h2',{attrs:{"id":"a-note-about-git-author-name-2"}},[_v("A note about git author name"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#a-note-about-git-author-name-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Git Author Name")]),_v(" refers to the customizable author's display name set in the local "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(".gitconfig")]),_v(" file. For example, in the Git Log's display:")]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"no-line-numbers hljs"}},[_c('span',[_v("...\n")]),_c('span',[_v("commit cd7f610e0becbdf331d5231887d8010a689f87c7\n")]),_c('span',[_v("Author: ConfiguredAuthorName \n")]),_c('span',[_v("Date: Fri Feb 9 19:14:41 2018 +0800\n")]),_c('span',[_v("\n")]),_c('span',[_v(" Make some changes to show my new author's name\n")]),_c('span',[_v("\n")]),_c('span',[_v("commit e3f699fd4ef128eebce98d5b4e5b3bb06a512f49\n")]),_c('span',[_v("Author: ActualGitHostId \n")]),_c('span',[_v("Date: Fri Feb 9 19:13:13 2018 +0800\n")]),_c('span',[_v("\n")]),_c('span',[_v(" Initial commit\n")]),_c('span',[_v(" ...\n")])])]),_c('p',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ActualGitHostId")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ConfiguredAuthorName")]),_v(" are both "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Git Author Name")]),_v(" of the same author."),_c('br'),_v("\nTo find the author name that you are currently using for your current git repository, run the following command within your git repository:")]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"no-line-numbers hljs"}},[_c('span',[_v("git config user.name\n")])])]),_c('p',[_v("To set the author name to the value you want (e.g., to set it to your GitHub username) for your current git repository, you can use the following command ("),_c('a',{attrs:{"href":"https://www.git-tower.com/learn/git/faq/change-author-name-email"}},[_v("more info")]),_v("):")]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"no-line-numbers hljs"}},[_c('span',[_v("git config user.name \"YOUR_AUTHOR_NAME”\n")])])]),_c('p',[_v("To set the author name to use a default value you want for future git repositories, you can use the following command:")]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"no-line-numbers hljs"}},[_c('span',[_v("git config --global user.name \"YOUR_AUTHOR_NAME”\n")])])]),_c('p',[_v("RepoSense expects the Git Author Name to be the same as author's username on the Git hosting platform (GitHub, GitLab, BitBucket). If an author's "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Git Author Name")]),_v(" is different from their username on the Git hosting platform, the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Git Author Name")]),_v(" needs to be specified in the standalone config file. If the author has more than one "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Git Author Name")]),_v(", multiple values can be entered too.")]),_v(" "),_c('box',{attrs:{"type":"warning","seamless":""}},[_c('p',[_v("Note: Symbols such as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("\"")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("!")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("/")]),_v(" etc. in your author name will be omitted, which may reduce the accuracy of the analysis if 2 names in the repository are approximately similar.")])])],1),_v(" "),_c('div',{attrs:{"id":"section-blurbs"}},[_c('h2',{attrs:{"id":"blurbs-md-2"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("blurbs.md")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#blurbs-md-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("You can optionally use "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("blurbs.md")]),_v(" to add blurbs in Markdown syntax for repository branches. These blurbs will be seen when grouping by "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repo/Branch")]),_v(". ("),_c('a',{attrs:{"href":"https://github.com/reposense/RepoSense/blob/master/docs/ug/blurbs.md"}},[_v("example")]),_v(")")]),_v(" "),_c('p',[_c('strong',[_v("Format")]),_v(":")]),_v(" "),_c('ul',[_c('li',[_v("First line in section: Link to the repository branch.")]),_v(" "),_c('li',[_v("Second line onwards: Blurb content.")]),_v(" "),_c('li',[_v("Delimiter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("")]),_v(". Everything on the line after the delimiter will be ignored.")])])])],1)])],1),_v(" "),_c('p')]),_v(" "),_c('p',[_c('span',{staticClass:"badge bg-dark bigger-level0"},[_v("Step 8")]),_v(" "),_c('strong',[_v("View the generated report:")])]),_v(" "),_c('ol',[_c('li',[_v("Go to the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Settings")]),_v(" page of your fork in GitHub.")]),_v(" "),_c('li',[_v("Under the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("GitHub Pages")]),_v(" section, look for "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Your site is published at [LINK]")]),_v(". It should look something like "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://[YOUR_GITHUB_ID].github.io/publish-RepoSense")]),_v(".\n"),_c('a',{attrs:{"href":"/RepoSense/images/publishingguide-githubsetting.jpg","target":"_self"}},[_c('img',{staticClass:"img-fluid",attrs:{"src":"/RepoSense/images/publishingguide-githubsetting.jpg","alt":"GitHub Setting","title":"GitHub Setting"}})])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("It takes a few minutes for report generation. Meanwhile, you can monitor the progress live at "),_c('a',{attrs:{"href":"https://travis-ci.org/dashboard/builds"}},[_v("Travis-CI's Builds")]),_v(".")])])],1)])],1),_v(" "),_c('p')],1),_v(" "),_c('overlay-source',{staticClass:"fixed-header-padding",attrs:{"id":"page-nav","tag-name":"nav","to":"page-nav"}},[_c('div',{staticClass:"nav-component slim-scroll"},[_c('overlay-source',{staticClass:"nav nav-pills flex-column my-0 small no-flex-wrap",attrs:{"id":"mb-page-nav","tag-name":"nav","to":"mb-page-nav"}},[_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#generating-a-report"}},[_v("Generating a report‎")]),_v(" "),_c('nav',{staticClass:"nav nav-pills flex-column my-0 nested no-flex-wrap"},[_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#generating-reports-locally"}},[_v("Generating reports locally‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#generating-reports-remotely"}},[_v("Generating reports remotely‎")])])])],1)])],1),_v(" "),_m(11)])} }; var pageVueStaticRenderFns = [function anonymous( ) { @@ -38,6 +38,6 @@ with(this){return _c('p',[_c('strong',[_v("The easiest option is to use Netlify. with(this){return _c('p',[_c('strong',[_v("You can also use the following options.")]),_v(" While they are more work to set up, they are more suitable as a permanent solution due to their generous free tier.")])} },function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('small',[_v("["),_c('span',[_c('strong',[_v("Powered by")])]),_v(" "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"30"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.2")]),_v(", generated on Tue, 14 May 2024, 13:12:51 UTC]")])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('small',[_v("["),_c('span',[_c('strong',[_v("Powered by")])]),_v(" "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"30"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.2")]),_v(", generated on Thu, 16 May 2024, 22:31:25 UTC]")])])])} }]; \ No newline at end of file diff --git a/ug/grantingWriteAccess.html b/ug/grantingWriteAccess.html index fe13ec4a51..fa2c8fbc04 100644 --- a/ug/grantingWriteAccess.html +++ b/ug/grantingWriteAccess.html @@ -17,7 +17,7 @@

    You are looking at the user documentation for the most recent master branch of RepoSense (not released to the public yet). The documentation for the latest public release is here.

    Granting write-access to a repository

    We recommend using a personal access token if aiming for the ease of setup and deploy key if aiming for enhanced security.

    If you wish to use personal access token:

    1. Create a personal access token by following this guide and give only public_repo permission.
    2. Copy the token for later use.

    If you wish to use deploy key:

    [Windows users] ssh-keygen and base64 are accessible using Git Bash.

    1. Create a public-private key pair (without a passphrase) using the ssh-keygen.
      i.e., ssh-keygen -t ecdsa -b 521 -f id_reposense -q -N ""
    2. Create a deploy key as follows:
      1. Go to the settings page of your publish-RepoSense fork
      2. Click on the Deploy keys item in the navigation menu in that page
      3. Click on the Add deploy key button and create a new deploy key with the contents of id_reposense.pub.
    3. Copy the private key in base64 encoded format for later use.
      -i.e., cat id_reposense | base64 -w 0
    [Powered by MarkBind 5.5.2, generated on Tue, 14 May 2024, 13:12:51 UTC]
    +i.e., cat id_reposense | base64 -w 0
    [Powered by MarkBind 5.5.2, generated on Thu, 16 May 2024, 22:31:25 UTC]
    diff --git a/ug/grantingWriteAccess.page-vue-render.js b/ug/grantingWriteAccess.page-vue-render.js index 9ae7c488c4..17b0bb9c52 100644 --- a/ug/grantingWriteAccess.page-vue-render.js +++ b/ug/grantingWriteAccess.page-vue-render.js @@ -1,7 +1,7 @@ var pageVueRenderFn = function anonymous( ) { -with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"fixed":""}},[_c('navbar',{attrs:{"type":"dark"},scopedSlots:_u([{key:"brand",fn:function(){return [_c('a',{staticClass:"navbar-brand",attrs:{"href":"/index.html","title":"Home"}},[_c('img',{attrs:{"width":"30px","src":"/favicon.ico"}})])]},proxy:true},{key:"right",fn:function(){return [_c('li',[_c('form',{staticClass:"navbar-form"},[_c('searchbar',{attrs:{"data":searchData,"placeholder":"Search","on-hit":searchCallback,"menu-align-right":""}})],1)])]},proxy:true}])},[_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/index.html"}},[_v("HOME")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/showcase.html"}},[_v("SHOWCASE")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/ug/index.html"}},[_v("USER GUIDE")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/dg/index.html"}},[_v("DEVELOPER GUIDE")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/about.html"}},[_v("ABOUT")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/contact.html"}},[_v("CONTACT")])]),_v(" "),_c('li',{attrs:{"tags":"dev"}},[_c('a',{staticClass:"nav-link",attrs:{"href":"https://reposense.org","target":"_blank"}},[_c('span',[_c('span',{staticClass:"fas fa-external-link-alt",attrs:{"aria-hidden":"true"}}),_v(" PRODUCTION SITE")])])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"https://github.com/RepoSense/reposense","target":"_blank"}},[_c('span',[_c('span',{staticClass:"fab fa-github",attrs:{"aria-hidden":"true"}})])])])]),_v(" "),_m(0)],1),_v(" "),_c('div',{attrs:{"id":"flex-body"}},[_c('overlay-source',{staticClass:"fixed-header-padding",attrs:{"id":"site-nav","tag-name":"nav","to":"site-nav"}},[_c('div',{staticClass:"site-nav-top"},[_c('div',{staticClass:"font-weight-bold mb-2",staticStyle:{"font-size":"1.25rem"}},[_c('span',[_c('strong',[_c('strong',[_v("USER GUIDE")])])])])]),_v(" "),_c('div',{staticClass:"nav-component slim-scroll"},[_c('div',[_c('site-nav',[_c('overlay-source',{staticClass:"site-nav-list site-nav-list-root",attrs:{"tag-name":"ul","to":"mb-site-nav"}},[_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/index.html"}},[_c('strong',[_v("Overview")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/generatingReports.html"}},[_c('strong',[_v("Generating reports")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/usingReports.html"}},[_c('strong',[_v("Using reports")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/customizingReports.html"}},[_c('strong',[_v("Customizing reports")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/sharingReports.html"}},[_c('strong',[_v("Sharing reports")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('strong',[_v("Appendices")]),_v(" "),_c('div',{staticClass:"site-nav-dropdown-btn-container"},[_c('i',{staticClass:"site-nav-dropdown-btn-icon site-nav-rotate-icon",attrs:{"onclick":"handleSiteNavClick(this.parentNode.parentNode, false); event.stopPropagation();"}},[_c('span',{staticClass:"glyphicon glyphicon-menu-down",attrs:{"aria-hidden":"true"}})])])]),_c('ul',{staticClass:"site-nav-dropdown-container site-nav-dropdown-container-open site-nav-list"},[_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/cli.html"}},[_v("CLI syntax reference")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/configFiles.html"}},[_v("Config files format")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/authorConfigSyntax.html"}},[_v("Advanced syntax: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/usingAuthorTags.html"}},[_v("Using "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("@@author")]),_v(" tags")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/withNetlify.html"}},[_v("RepoSense with Netlify")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/withGithubActions.html"}},[_v("RepoSense with GitHub Actions")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/withTravis.html"}},[_v("RepoSense with Travis")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/runSh.html"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("run.sh")]),_v(" format")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/faq.html"}},[_v("FAQ")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/troubleshooting.html"}},[_v("Troubleshooting")])])])])])])],1)],1)])]),_v(" "),_c('div',{staticClass:"fixed-header-padding",attrs:{"id":"content-wrapper"}},[_m(1),_v(" "),_m(2),_v(" "),_m(3),_v(" "),_m(4),_v(" "),_m(5),_v(" "),_c('box',{attrs:{"type":"info"},scopedSlots:_u([{key:"icon",fn:function(){return [_c('span',{staticClass:"fab fa-windows",attrs:{"aria-hidden":"true"}})]},proxy:true}])},[_v(" "),_c('p',[_v("[Windows users] "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ssh-keygen")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("base64")]),_v(" are accessible using "),_c('a',{attrs:{"href":"https://gitforwindows.org/"}},[_v("Git Bash")]),_v(".")])]),_v(" "),_m(6)],1)],1),_v(" "),_m(7)])} +with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"fixed":""}},[_c('navbar',{attrs:{"type":"dark"},scopedSlots:_u([{key:"brand",fn:function(){return [_c('a',{staticClass:"navbar-brand",attrs:{"href":"/index.html","title":"Home"}},[_c('img',{attrs:{"width":"30px","src":"/favicon.ico"}})])]},proxy:true},{key:"right",fn:function(){return [_c('li',[_c('form',{staticClass:"navbar-form"},[_c('searchbar',{attrs:{"data":searchData,"placeholder":"Search","on-hit":searchCallback,"menu-align-right":""}})],1)])]},proxy:true}])},[_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/index.html"}},[_v("HOME")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/showcase.html"}},[_v("SHOWCASE")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/ug/index.html"}},[_v("USER GUIDE")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/dg/index.html"}},[_v("DEVELOPER GUIDE")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/about.html"}},[_v("ABOUT")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/contact.html"}},[_v("CONTACT")])]),_v(" "),_c('li',{attrs:{"tags":"dev"}},[_c('a',{staticClass:"nav-link",attrs:{"href":"https://reposense.org","target":"_blank"}},[_c('span',[_c('span',{staticClass:"fas fa-external-link-alt",attrs:{"aria-hidden":"true"}}),_v(" PRODUCTION SITE")])])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"https://github.com/RepoSense/reposense","target":"_blank"}},[_c('span',[_c('span',{staticClass:"fab fa-github",attrs:{"aria-hidden":"true"}})])])])]),_v(" "),_m(0)],1),_v(" "),_c('div',{attrs:{"id":"flex-body"}},[_c('overlay-source',{staticClass:"fixed-header-padding",attrs:{"id":"site-nav","tag-name":"nav","to":"site-nav"}},[_c('div',{staticClass:"site-nav-top"},[_c('div',{staticClass:"font-weight-bold mb-2",staticStyle:{"font-size":"1.25rem"}},[_c('span',[_c('strong',[_c('strong',[_v("USER GUIDE")])])])])]),_v(" "),_c('div',{staticClass:"nav-component slim-scroll"},[_c('div',[_c('site-nav',[_c('overlay-source',{staticClass:"site-nav-list site-nav-list-root",attrs:{"tag-name":"ul","to":"mb-site-nav"}},[_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/index.html"}},[_c('strong',[_v("Overview")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/generatingReports.html"}},[_c('strong',[_v("Generating reports")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/usingReports.html"}},[_c('strong',[_v("Using reports")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/customizingReports.html"}},[_c('strong',[_v("Customizing reports")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/sharingReports.html"}},[_c('strong',[_v("Sharing reports")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('strong',[_v("Appendices")]),_v(" "),_c('div',{staticClass:"site-nav-dropdown-btn-container"},[_c('i',{staticClass:"site-nav-dropdown-btn-icon site-nav-rotate-icon",attrs:{"onclick":"handleSiteNavClick(this.parentNode.parentNode, false); event.stopPropagation();"}},[_c('span',{staticClass:"glyphicon glyphicon-menu-down",attrs:{"aria-hidden":"true"}})])])]),_c('ul',{staticClass:"site-nav-dropdown-container site-nav-dropdown-container-open site-nav-list"},[_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/cli.html"}},[_v("CLI syntax reference")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/configFiles.html"}},[_v("Config files format")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/authorConfigSyntax.html"}},[_v("Advanced syntax: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/usingAuthorTags.html"}},[_v("Using "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("@@author")]),_v(" tags")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/withNetlify.html"}},[_v("RepoSense with Netlify")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/withGithubActions.html"}},[_v("RepoSense with GitHub Actions")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/withTravis.html"}},[_v("RepoSense with Travis")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/runSh.html"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("run.sh")]),_v(" format")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/faq.html"}},[_v("FAQ")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/troubleshooting.html"}},[_v("Troubleshooting")])])])])])])],1)],1)])]),_v(" "),_c('div',{staticClass:"fixed-header-padding",attrs:{"id":"content-wrapper"}},[_m(1),_v(" "),_m(2),_v(" "),_m(3),_v(" "),_m(4),_v(" "),_m(5),_v(" "),_c('box',{attrs:{"type":"info"},scopedSlots:_u([{key:"icon",fn:function(){return [_c('span',{staticClass:"fab fa-windows",attrs:{"aria-hidden":"true"}})]},proxy:true}])},[_v(" "),_c('p',[_v("[Windows users] "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ssh-keygen")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("base64")]),_v(" are accessible using "),_c('a',{attrs:{"href":"https://gitforwindows.org/"}},[_v("Git Bash")]),_v(".")])]),_v(" "),_m(6)],1),_v(" "),_c('overlay-source',{staticClass:"fixed-header-padding",attrs:{"id":"page-nav","tag-name":"nav","to":"page-nav"}},[_c('div',{staticClass:"nav-component slim-scroll"})])],1),_v(" "),_m(7)])} }; var pageVueStaticRenderFns = [function anonymous( ) { @@ -26,6 +26,6 @@ with(this){return _c('h3',{attrs:{"id":"if-you-wish-to-use-deploy-key"}},[_v("If with(this){return _c('ol',[_c('li',[_c('strong',[_v("Create a public-private key pair")]),_v(" (without a passphrase) using the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ssh-keygen")]),_v(". "),_c('br'),_v("\ni.e., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ssh-keygen -t ecdsa -b 521 -f id_reposense -q -N \"\"")])]),_v(" "),_c('li',[_c('strong',[_v("Create a deploy key")]),_v(" as follows:\n"),_c('ol',[_c('li',[_v("Go to the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("settings")]),_v(" page of your publish-RepoSense fork")]),_v(" "),_c('li',[_v("Click on the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Deploy keys")]),_v(" item in the navigation menu in that page")]),_v(" "),_c('li',[_v("Click on the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Add deploy key")]),_v(" button and create a new deploy key with the contents of "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("id_reposense.pub")]),_v(".")])])]),_v(" "),_c('li',[_c('strong',[_v("Copy the private key")]),_v(" in base64 encoded format for later use. "),_c('br'),_v("\ni.e., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("cat id_reposense | base64 -w 0")])])])} },function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('small',[_v("["),_c('span',[_c('strong',[_v("Powered by")])]),_v(" "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"30"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.2")]),_v(", generated on Tue, 14 May 2024, 13:12:51 UTC]")])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('small',[_v("["),_c('span',[_c('strong',[_v("Powered by")])]),_v(" "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"30"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.2")]),_v(", generated on Thu, 16 May 2024, 22:31:25 UTC]")])])])} }]; \ No newline at end of file diff --git a/ug/index.html b/ug/index.html index 27c7c4b999..fd336e3fcd 100644 --- a/ug/index.html +++ b/ug/index.html @@ -14,7 +14,7 @@

    You are looking at the user documentation for the most recent master branch of RepoSense (not released to the public yet). The documentation for the latest public release is here.

    User guide

    Welcome to the RepoSense user guide. This user guide takes you through a three-step approach to adopting RepoSense for your own use.


    In case you missed it, the overview of RepoSense is given below.

    Report: We use the term report to refer to the web-based visualization generated by RepoSense. You can also think of it as a dashboard.

    1 Explore real-life examples

    If still not entirely sure if RepoSense matches your needs, you can use the examples of real-life RepoSense reports given below to get some sense of what visualizations it produces.

    As you explore the above examples, you can refer to the following section to learn how to read and interact with those reports.

    2 Generate your own reports

    The next step is to generate your own RepoSense reports, either in your computer, or on one of the remote platforms we support.

    As you generate reports, you may need to learn how to customize those reports further.

    3 Share your reports

    Finally, you can learn how to share those reports with others, and how to automate the whole process.

    If you encounter problems at any step, you can refer to our FAQ, the troubleshooting guide, or post in our issue tracker.



    Happy RepoSensing!

    [Powered by MarkBind 5.5.2, generated on Tue, 14 May 2024, 13:12:51 UTC]
    +

    You are looking at the user documentation for the most recent master branch of RepoSense (not released to the public yet). The documentation for the latest public release is here.

    User guide

    Welcome to the RepoSense user guide. This user guide takes you through a three-step approach to adopting RepoSense for your own use.


    In case you missed it, the overview of RepoSense is given below.

    Report: We use the term report to refer to the web-based visualization generated by RepoSense. You can also think of it as a dashboard.

    1 Explore real-life examples

    If still not entirely sure if RepoSense matches your needs, you can use the examples of real-life RepoSense reports given below to get some sense of what visualizations it produces.

    As you explore the above examples, you can refer to the following section to learn how to read and interact with those reports.

    2 Generate your own reports

    The next step is to generate your own RepoSense reports, either in your computer, or on one of the remote platforms we support.

    As you generate reports, you may need to learn how to customize those reports further.

    3 Share your reports

    Finally, you can learn how to share those reports with others, and how to automate the whole process.

    If you encounter problems at any step, you can refer to our FAQ, the troubleshooting guide, or post in our issue tracker.



    Happy RepoSensing!

    [Powered by MarkBind 5.5.2, generated on Thu, 16 May 2024, 22:31:25 UTC]
    diff --git a/ug/index.page-vue-render.js b/ug/index.page-vue-render.js index ff63b6bfb7..3fc46f729b 100644 --- a/ug/index.page-vue-render.js +++ b/ug/index.page-vue-render.js @@ -1,7 +1,7 @@ var pageVueRenderFn = function anonymous( ) { -with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"fixed":""}},[_c('navbar',{attrs:{"type":"dark"},scopedSlots:_u([{key:"brand",fn:function(){return [_c('a',{staticClass:"navbar-brand",attrs:{"href":"/index.html","title":"Home"}},[_c('img',{attrs:{"width":"30px","src":"/favicon.ico"}})])]},proxy:true},{key:"right",fn:function(){return [_c('li',[_c('form',{staticClass:"navbar-form"},[_c('searchbar',{attrs:{"data":searchData,"placeholder":"Search","on-hit":searchCallback,"menu-align-right":""}})],1)])]},proxy:true}])},[_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/index.html"}},[_v("HOME")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/showcase.html"}},[_v("SHOWCASE")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/ug/index.html"}},[_v("USER GUIDE")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/dg/index.html"}},[_v("DEVELOPER GUIDE")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/about.html"}},[_v("ABOUT")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/contact.html"}},[_v("CONTACT")])]),_v(" "),_c('li',{attrs:{"tags":"dev"}},[_c('a',{staticClass:"nav-link",attrs:{"href":"https://reposense.org","target":"_blank"}},[_c('span',[_c('span',{staticClass:"fas fa-external-link-alt",attrs:{"aria-hidden":"true"}}),_v(" PRODUCTION SITE")])])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"https://github.com/RepoSense/reposense","target":"_blank"}},[_c('span',[_c('span',{staticClass:"fab fa-github",attrs:{"aria-hidden":"true"}})])])])]),_v(" "),_m(0)],1),_v(" "),_c('div',{attrs:{"id":"flex-body"}},[_c('overlay-source',{staticClass:"fixed-header-padding",attrs:{"id":"site-nav","tag-name":"nav","to":"site-nav"}},[_c('div',{staticClass:"site-nav-top"},[_c('div',{staticClass:"font-weight-bold mb-2",staticStyle:{"font-size":"1.25rem"}},[_c('span',[_c('strong',[_c('strong',[_v("USER GUIDE")])])])])]),_v(" "),_c('div',{staticClass:"nav-component slim-scroll"},[_c('div',[_c('site-nav',[_c('overlay-source',{staticClass:"site-nav-list site-nav-list-root",attrs:{"tag-name":"ul","to":"mb-site-nav"}},[_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/index.html"}},[_c('strong',[_v("Overview")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/generatingReports.html"}},[_c('strong',[_v("Generating reports")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/usingReports.html"}},[_c('strong',[_v("Using reports")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/customizingReports.html"}},[_c('strong',[_v("Customizing reports")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/sharingReports.html"}},[_c('strong',[_v("Sharing reports")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('strong',[_v("Appendices")]),_v(" "),_c('div',{staticClass:"site-nav-dropdown-btn-container"},[_c('i',{staticClass:"site-nav-dropdown-btn-icon site-nav-rotate-icon",attrs:{"onclick":"handleSiteNavClick(this.parentNode.parentNode, false); event.stopPropagation();"}},[_c('span',{staticClass:"glyphicon glyphicon-menu-down",attrs:{"aria-hidden":"true"}})])])]),_c('ul',{staticClass:"site-nav-dropdown-container site-nav-dropdown-container-open site-nav-list"},[_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/cli.html"}},[_v("CLI syntax reference")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/configFiles.html"}},[_v("Config files format")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/authorConfigSyntax.html"}},[_v("Advanced syntax: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/usingAuthorTags.html"}},[_v("Using "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("@@author")]),_v(" tags")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/withNetlify.html"}},[_v("RepoSense with Netlify")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/withGithubActions.html"}},[_v("RepoSense with GitHub Actions")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/withTravis.html"}},[_v("RepoSense with Travis")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/runSh.html"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("run.sh")]),_v(" format")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/faq.html"}},[_v("FAQ")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/troubleshooting.html"}},[_v("Troubleshooting")])])])])])])],1)],1)])]),_v(" "),_c('div',{staticClass:"fixed-header-padding",attrs:{"id":"content-wrapper"}},[_m(1),_v(" "),_m(2),_v(" "),_c('hr',{staticClass:"thick"}),_v(" "),_c('p',[_v("In case you missed it, the overview of RepoSense is given below.")]),_v(" "),_c('div',{staticClass:"indented-level0"},[_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('span',[_c('span',{staticClass:"glyphicon glyphicon-log-in",attrs:{"aria-hidden":"true"}})]),_v(" "),_c('strong',[_v("RepoSense overview")])])]},proxy:true}])},[_v(" "),_c('div',[_c('p',[_c('strong',[_v("RepoSense can generate interactive visualizations of programmer activities, even across multiple repositories.")]),_v(" It's ideal for educators and managers to get insights into the programming activities of their mentees. The visualizations can be "),_c('strong',[_v("easily shared")]),_v(" with others (e.g., as an online dashboard), and updating the visualizations periodically "),_c('strong',[_v("can be automated")]),_v(".")]),_v(" "),_c('p',[_v("Some example insights RepoSense can provide:")]),_v(" "),_c('h4',{attrs:{"id":"insights-about-the-code"}},[_c('thumbnail',{attrs:{"circle":"","background":"#006600","font-color":"white","size":"50"}},[_c('span',{staticClass:"fas fa-code",attrs:{"aria-hidden":"true"}})]),_v(" "),_c('span',{staticClass:"lead font-weight-bold text-green"},[_v("Insights about the code")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#insights-about-the-code","onclick":"event.stopPropagation()"}})],1),_v(" "),_c('ul',[_c('li',[_v("Which part of the code was written by Tom? How many lines? How many files?")]),_v(" "),_c('li',[_v("Which test cases were written by Kim?")]),_v(" "),_c('li',[_v("Which commit messages were written by Serene?")])]),_v(" "),_c('h4',{attrs:{"id":"insights-about-the-type-of-work"}},[_c('thumbnail',{attrs:{"circle":"","background":"#006600","font-color":"white","size":"50"}},[_c('span',{staticClass:"fas fa-chart-pie",attrs:{"aria-hidden":"true"}})]),_v(" "),_c('span',{staticClass:"lead font-weight-bold text-green"},[_v("Insights about the type of work")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#insights-about-the-type-of-work","onclick":"event.stopPropagation()"}})],1),_v(" "),_c('ul',[_c('li',[_v("Which portion of Jacob's code is documentation?")]),_v(" "),_c('li',[_v("Who hasn't written any test code yet?")]),_v(" "),_c('li',[_v("Which project did Jolene contribute to in the last month?")])]),_v(" "),_c('h4',{attrs:{"id":"insights-about-the-timing-of-work"}},[_c('thumbnail',{attrs:{"circle":"","background":"#006600","font-color":"white","size":"50"}},[_c('span',{staticClass:"fas fa-business-time",attrs:{"aria-hidden":"true"}})]),_v(" "),_c('span',{staticClass:"lead font-weight-bold text-green"},[_v("Insights about the timing of work")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#insights-about-the-timing-of-work","onclick":"event.stopPropagation()"}})],1),_v(" "),_c('ul',[_c('li',[_v("Who is putting in the consistent effort?")]),_v(" "),_c('li',[_v("Who waits till the deadline to do the work?")]),_v(" "),_c('li',[_v("Who hasn't started any work yet?")])]),_v(" "),_c('h4',{attrs:{"id":"insights-based-on-comparisons"}},[_c('thumbnail',{attrs:{"circle":"","background":"#006600","font-color":"white","size":"50"}},[_c('span',{staticClass:"fas fa-list-ol",attrs:{"aria-hidden":"true"}})]),_v(" "),_c('span',{staticClass:"lead font-weight-bold text-green"},[_v("Insights based on comparisons")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#insights-based-on-comparisons","onclick":"event.stopPropagation()"}})],1),_v(" "),_c('ul',[_c('li',[_v("Which programmers/teams are falling behind?")]),_v(" "),_c('li',[_v("How does everyone compare in their front-end coding work over the past two weeks?")]),_v(" "),_c('li',[_v("Who are the top 10 code contributors?")])])])])],1),_v(" "),_c('p'),_v(" "),_c('box',{attrs:{"type":"definition","seamless":""}},[_c('p',[_c('strong',[_v("Report")]),_v(": We use the term "),_c('em',[_v("report")]),_v(" to refer to the web-based visualization generated by RepoSense. You can also think of it as a "),_c('em',[_v("dashboard")]),_v(".")])]),_v(" "),_c('h1',{attrs:{"id":"1-explore-real-life-examples"}},[_c('thumbnail',{attrs:{"circle":"","background":"#006600","font-color":"white","size":"50"}},[_v("1")]),_v(" "),_c('strong',[_v("Explore")]),_v(" real-life examples"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#1-explore-real-life-examples","onclick":"event.stopPropagation()"}})],1),_v(" "),_c('p',[_v("If still not entirely sure if RepoSense matches your needs, you can use the examples of real-life RepoSense reports given below to get some sense of what visualizations it produces.")]),_v(" "),_c('div',{staticClass:"indented-level0"},[_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('span',[_c('span',{staticClass:"glyphicon glyphicon-log-in",attrs:{"aria-hidden":"true"}})]),_v(" "),_c('strong',[_v("A showcase of RepoSense reports")])])]},proxy:true}])},[_v(" "),_c('div',[_c('h1',{staticClass:"display-3",attrs:{"id":"showcase"}},[_c('span',[_v("Showcase")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#showcase","onclick":"event.stopPropagation()"}})]),_v(" "),_c('h3',{attrs:{"id":"case-1-monitoring-student-programmers-individual-projects"}},[_v("Case 1: Monitoring student programmers ("),_c('strong',[_v("individual")]),_v(" projects)"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#case-1-monitoring-student-programmers-individual-projects","onclick":"event.stopPropagation()"}})]),_v(" "),_c('ul',[_c('li',[_c('p',[_c('strong',[_v("Scenario:")]),_v(" RepoSense is used to monitor a Software Engineering course in which students build a project over 8 weeks.")])]),_v(" "),_c('li',[_c('p',[_c('strong',[_v("Links:")]),_v(" "),_c('a',{attrs:{"href":"https://nus-cs2103-ay2021s1.github.io/ip-dashboard/?search=&sort=groupTitle&sortWithin=title&since=2020-08-14&until=2020-09-27&timeframe=commit&mergegroup=&groupSelect=groupByRepos&breakdown=false"}},[_v("report")]),_v(" | "),_c('a',{attrs:{"href":"https://github.com/nus-cs2103-AY2021S1/ip-dashboard"}},[_v("repo containing the settings")])])]),_v(" "),_c('li',[_c('p',[_c('strong',[_v("Example usages:")])]),_v(" "),_c('ul',[_c('li',[_v("To compare students based on the amount of code written, we can sort by contribution, as done in "),_c('a',{attrs:{"href":"https://nus-cs2103-ay2021s1.github.io/ip-dashboard/?search=&sort=totalCommits%20dsc&sortWithin=title&since=2020-08-14&until=2020-09-27&timeframe=commit&mergegroup=&groupSelect=groupByRepos&breakdown=false"}},[_v("this view")]),_v(".")]),_v(" "),_c('li',[_c('a',{attrs:{"href":"https://nus-cs2103-ay2021s1.github.io/ip-dashboard/?search=keanecjy&sort=totalCommits%20dsc&sortWithin=title&since=2020-08-14&until=2020-09-27&timeframe=commit&mergegroup=&groupSelect=groupByRepos&breakdown=false&tabOpen=true&tabType=authorship&tabAuthor=keanecjy&tabRepo=keanecjy%2Fip%5Bmaster%5D&authorshipIsMergeGroup=false&authorshipFileTypes=java~md~fxml~bat~gradle~txt"}},[_v("This view")]),_v(" shows us code written by a specific student.")])])])]),_v(" "),_c('h3',{attrs:{"id":"case-2-monitoring-student-programmers-team-projects"}},[_v("Case 2: Monitoring student programmers ("),_c('strong',[_v("team")]),_v(" projects)"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#case-2-monitoring-student-programmers-team-projects","onclick":"event.stopPropagation()"}})]),_v(" "),_c('ul',[_c('li',[_c('p',[_c('strong',[_v("Scenario:")]),_v(" Similar to case 1 above, but this time students are doing team projects.")])]),_v(" "),_c('li',[_c('p',[_c('strong',[_v("Links:")]),_v(" "),_c('a',{attrs:{"href":"https://nus-cs2103-ay2122s1.github.io/tp-dashboard/?search=&sort=groupTitle&sortWithin=title&timeframe=commit&mergegroup=&groupSelect=groupByRepos&breakdown=false&since=2021-09-17&until=2021-11-19"}},[_v("report")]),_v(" | "),_c('a',{attrs:{"href":"https://github.com/nus-cs2103-AY2122S1/tp-dashboard"}},[_v("settings")])])]),_v(" "),_c('li',[_c('p',[_c('strong',[_v("Example usages:")])]),_v(" "),_c('ul',[_c('li',[_v("To find the breakdown of the work done, we can tick the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("breakdown by file type")]),_v(" checkbox, as shown in "),_c('a',{attrs:{"href":"https://nus-cs2103-ay2122s1.github.io/tp-dashboard/?search=&sort=groupTitle&sortWithin=title&timeframe=commit&mergegroup=&groupSelect=groupByRepos&breakdown=true&checkedFileTypes=docs~functional-code~test-code~other&since=2021-09-17&until=2021-11-19"}},[_v("this view")]),_v(". After that, we can filter out certain file types by un-ticking the file type.")]),_v(" "),_c('li',[_v("To find how teams compare in terms of total work done, we can tick the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("merge all groups")]),_v(" check-box and sort groups by "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Contribution")]),_v(", as seen in "),_c('a',{attrs:{"href":"https://nus-cs2103-ay2122s1.github.io/tp-dashboard/?search=&sort=totalCommits%20dsc&sortWithin=title&timeframe=week&mergegroup=AY2122S1-CS2103-F09-1%2Ftp%5Bmaster%5D~AY2122S1-CS2103-F09-2%2Ftp%5Bmaster%5D~AY2122S1-CS2103-F09-3%2Ftp%5Bmaster%5D~AY2122S1-CS2103-F09-4%2Ftp%5Bmaster%5D~AY2122S1-CS2103-F10-1%2Ftp%5Bmaster%5D~AY2122S1-CS2103-F10-2%2Ftp%5Bmaster%5D~AY2122S1-CS2103-F10-3%2Ftp%5Bmaster%5D~AY2122S1-CS2103-F10-4%2Ftp%5Bmaster%5D~AY2122S1-CS2103-T14-1%2Ftp%5Bmaster%5D~AY2122S1-CS2103-T14-2%2Ftp%5Bmaster%5D~AY2122S1-CS2103-T14-3%2Ftp%5Bmaster%5D~AY2122S1-CS2103-T14-4%2Ftp%5Bmaster%5D~AY2122S1-CS2103-T16-1%2Ftp%5Bmaster%5D~AY2122S1-CS2103-T16-2%2Ftp%5Bmaster%5D~AY2122S1-CS2103-T16-3%2Ftp%5Bmaster%5D~AY2122S1-CS2103-T16-4%2Ftp%5Bmaster%5D~AY2122S1-CS2103-W14-1%2Ftp%5Bmaster%5D~AY2122S1-CS2103-W14-2%2Ftp%5Bmaster%5D~AY2122S1-CS2103-W14-3%2Ftp%5Bmaster%5D~AY2122S1-CS2103-W14-4%2Ftp%5Bmaster%5D~AY2122S1-CS2103T-F11-1%2Ftp%5Bmaster%5D~AY2122S1-CS2103T-F11-2%2Ftp%5Bmaster%5D~AY2122S1-CS2103T-F11-3%2Ftp%5Bmaster%5D~AY2122S1-CS2103T-F11-4%2Ftp%5Bmaster%5D~AY2122S1-CS2103T-F12-1%2Ftp%5Bmaster%5D~AY2122S1-CS2103T-F12-2%2Ftp%5Bmaster%5D~AY2122S1-CS2103T-F12-3%2Ftp%5Bmaster%5D~AY2122S1-CS2103T-F12-4%2Ftp%5Bmaster%5D~AY2122S1-CS2103T-F13-1%2Ftp%5Bmaster%5D~AY2122S1-CS2103T-F13-2%2Ftp%5Bmaster%5D~AY2122S1-CS2103T-F13-3%2Ftp%5Bmaster%5D~AY2122S1-CS2103T-F13-4%2Ftp%5Bmaster%5D~AY2122S1-CS2103T-T09-1%2Ftp%5Bmaster%5D~AY2122S1-CS2103T-T09-2%2Ftp%5Bmaster%5D~AY2122S1-CS2103T-T09-3%2Ftp%5Bmaster%5D~AY2122S1-CS2103T-T09-4%2Ftp%5Bmaster%5D~AY2122S1-CS2103T-T10-1%2Ftp%5Bmaster%5D~AY2122S1-CS2103T-T10-2%2Ftp%5Bmaster%5D~AY2122S1-CS2103T-T10-3%2Ftp%5Bmaster%5D~AY2122S1-CS2103T-T10-4%2Ftp%5Bmaster%5D~AY2122S1-CS2103T-T11-1%2Ftp%5Bmaster%5D~AY2122S1-CS2103T-T11-2%2Ftp%5Bmaster%5D~AY2122S1-CS2103T-T11-3%2Ftp%5Bmaster%5D~AY2122S1-CS2103T-T11-4%2Ftp%5Bmaster%5D~AY2122S1-CS2103T-T12-1%2Ftp%5Bmaster%5D~AY2122S1-CS2103T-T12-2%2Ftp%5Bmaster%5D~AY2122S1-CS2103T-T12-3%2Ftp%5Bmaster%5D~AY2122S1-CS2103T-T12-4%2Ftp%5Bmaster%5D~AY2122S1-CS2103T-T13-1%2Ftp%5Bmaster%5D~AY2122S1-CS2103T-T13-2%2Ftp%5Bmaster%5D~AY2122S1-CS2103T-T13-3%2Ftp%5Bmaster%5D~AY2122S1-CS2103T-T13-4%2Ftp%5Bmaster%5D~AY2122S1-CS2103T-T15-1%2Ftp%5Bmaster%5D~AY2122S1-CS2103T-T15-2%2Ftp%5Bmaster%5D~AY2122S1-CS2103T-T15-3%2Ftp%5Bmaster%5D~AY2122S1-CS2103T-T15-4%2Ftp%5Bmaster%5D~AY2122S1-CS2103T-T17-1%2Ftp%5Bmaster%5D~AY2122S1-CS2103T-T17-2%2Ftp%5Bmaster%5D~AY2122S1-CS2103T-T17-3%2Ftp%5Bmaster%5D~AY2122S1-CS2103T-T17-4%2Ftp%5Bmaster%5D~AY2122S1-CS2103T-W08-1%2Ftp%5Bmaster%5D~AY2122S1-CS2103T-W08-2%2Ftp%5Bmaster%5D~AY2122S1-CS2103T-W08-3%2Ftp%5Bmaster%5D~AY2122S1-CS2103T-W08-4%2Ftp%5Bmaster%5D~AY2122S1-CS2103T-W10-1%2Ftp%5Bmaster%5D~AY2122S1-CS2103T-W10-2%2Ftp%5Bmaster%5D~AY2122S1-CS2103T-W10-3%2Ftp%5Bmaster%5D~AY2122S1-CS2103T-W10-4%2Ftp%5Bmaster%5D~AY2122S1-CS2103T-W11-1%2Ftp%5Bmaster%5D~AY2122S1-CS2103T-W11-2%2Ftp%5Bmaster%5D~AY2122S1-CS2103T-W11-3%2Ftp%5Bmaster%5D~AY2122S1-CS2103T-W11-4%2Ftp%5Bmaster%5D~AY2122S1-CS2103T-W12-1%2Ftp%5Bmaster%5D~AY2122S1-CS2103T-W12-2%2Ftp%5Bmaster%5D~AY2122S1-CS2103T-W12-3%2Ftp%5Bmaster%5D~AY2122S1-CS2103T-W12-4%2Ftp%5Bmaster%5D~AY2122S1-CS2103T-W13-1%2Ftp%5Bmaster%5D~AY2122S1-CS2103T-W13-2%2Ftp%5Bmaster%5D~AY2122S1-CS2103T-W13-3%2Ftp%5Bmaster%5D~AY2122S1-CS2103T-W13-4%2Ftp%5Bmaster%5D~AY2122S1-CS2103T-W15-1%2Ftp%5Bmaster%5D~AY2122S1-CS2103T-W15-2%2Ftp%5Bmaster%5D~AY2122S1-CS2103T-W15-3%2Ftp%5Bmaster%5D~AY2122S1-CS2103T-W15-4%2Ftp%5Bmaster%5D~AY2122S1-CS2103T-W16-1%2Ftp%5Bmaster%5D~AY2122S1-CS2103T-W16-2%2Ftp%5Bmaster%5D~AY2122S1-CS2103T-W16-3%2Ftp%5Bmaster%5D~AY2122S1-CS2103T-W16-4%2Ftp%5Bmaster%5D~AY2122S1-CS2103T-W17-1%2Ftp%5Bmaster%5D~AY2122S1-CS2103T-W17-2%2Ftp%5Bmaster%5D~AY2122S1-CS2103T-W17-3%2Ftp%5Bmaster%5D~AY2122S1-CS2103T-W17-4%2Ftp%5Bmaster%5D&groupSelect=groupByRepos&breakdown=true&since=2021-09-17&until=2021-11-19&checkedFileTypes=docs~functional-code~test-code~other"}},[_v("this view")]),_v(". Also, note how "),_c('tooltip',{scopedSlots:_u([{key:"content",fn:function(){return [_v("i.e., each ramp represents the work done by the entire team in the whole week")]},proxy:true}])},[_v("the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("granularity")]),_v(" of the ramps is set to "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Week")])]),_v(" to reduce clutter.")],1),_v(" "),_c('li',[_c('a',{attrs:{"href":"https://nus-cs2103-ay2122s1.github.io/tp-dashboard/?search=&sort=groupTitle&sortWithin=title&timeframe=commit&mergegroup=&groupSelect=groupByRepos&breakdown=true&checkedFileTypes=docs~functional-code~test-code~other&since=2021-10-29&until=2021-11-11"}},[_v("This view")]),_v(" shows the activities near the submission deadline of "),_c('a',{attrs:{"href":"https://nus-cs2103-ay2122s1.github.io/website/admin/tp-w13.html"}},[_v("8 November 2021")]),_v(" (note how some have overshot the deadline and some others show a frenzy of activities very near to the deadline).")])])])]),_v(" "),_c('h3',{attrs:{"id":"case-3-monitoring-student-programmers-multiple-external-projects"}},[_v("Case 3: Monitoring student programmers ("),_c('strong',[_v("multiple")]),_v(" external projects)"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#case-3-monitoring-student-programmers-multiple-external-projects","onclick":"event.stopPropagation()"}})]),_v(" "),_c('ul',[_c('li',[_c('p',[_c('strong',[_v("Scenario:")]),_v(" Similar to cases 1 and 2 above, but this time, each student works on multiple projects. Furthermore, most projects are external OSS projects, not within the control of the teacher.")])]),_v(" "),_c('li',[_c('p',[_c('strong',[_v("Links:")]),_v(" "),_c('a',{attrs:{"href":"https://nus-cs3281.github.io/2020-dashboard/?search=&sort=groupTitle&sortWithin=title&since=2019-12-01&timeframe=commit&mergegroup=&groupSelect=groupByRepos&breakdown=false"}},[_v("report")]),_v(" | "),_c('a',{attrs:{"href":"https://github.com/nus-cs3281/2020-dashboard"}},[_v("settings")])])]),_v(" "),_c('li',[_c('p',[_c('strong',[_v("Example usages:")])]),_v(" "),_c('ul',[_c('li',[_c('a',{attrs:{"href":"https://nus-cs3281.github.io/2020-dashboard/?search=&sort=groupTitle&sortWithin=title&since=2019-12-01&timeframe=commit&mergegroup=&groupSelect=groupByRepos&breakdown=false&tabOpen=true&tabType=zoom&zA=anubh-v&zR=CATcher-org%2FCATcher%5Bmaster%5D&zACS=153.40466101694915&zS=2019-12-01&zFS=&zU=2021-06-15&zMG=false&zFTF=commit&zFGS=groupByRepos&zFR=false"}},[_v("This view")]),_v(" shows the commit messages written by a specific student.")]),_v(" "),_c('li',[_v("Note how we can use the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("group by")]),_v(" drop-down to organize activities around projects or individual authors.")]),_v(" "),_c('li',[_v("Similarly, we can use the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("merge all groups")]),_v(" check-box to see the sum of activities in a specific project or by a specific student.")])])])])])])],1),_v(" "),_c('p'),_v(" "),_c('p',[_v("As you explore the above examples, you can refer to the following section to learn how to read and interact with those reports.")]),_v(" "),_c('div',{staticClass:"indented-level0"},[_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('span',[_c('span',{staticClass:"glyphicon glyphicon-log-in",attrs:{"aria-hidden":"true"}})]),_v(" "),_c('strong',[_v("Using reports")])])]},proxy:true}])},[_v(" "),_c('div',[_c('h1',{staticClass:"display-4",attrs:{"id":"using-reports"}},[_c('span',[_v("Using reports")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#using-reports","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{staticClass:"lead"},[_c('p',[_v("Let's look at how to view, interpret, and interact with a RepoSense report.")])]),_v(" "),_c('h2',{attrs:{"id":"viewing-the-report"}},[_v("Viewing the report"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#viewing-the-report","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("As a report consists of web pages, it can be viewed using a Web Browser. Here are the ways to view the report in different situations.")]),_v(" "),_c('ul',[_c('li',[_c('strong',[_v("Situation 1: The report has been hosted on a website")]),_v(" "),_c('ul',[_c('li',[_v("Simply go to the URL of the report ("),_c('a',{attrs:{"href":"https://nus-cs2113-ay1920s2.github.io/tp-dashboard"}},[_v("example")]),_v(") in your browser.")])])]),_v(" "),_c('li',[_c('strong',[_v("Situation 2: You generated the report in your computer earlier")]),_v(" "),_c('ul',[_c('li',[_v("Run RepoSense with the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--view")]),_v(" option:"),_c('br'),_v("\nFormat: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar --view REPORT_FOLDER")]),_c('br'),_v("\ne.g., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar --view ./myReport/reposense-report")])])])]),_v(" "),_c('li',[_c('strong',[_v("Situation 3: The report was given to you as a zip file or as a folder")]),_v(" "),_c('ol',[_c('li',[_v("If it is a zip file, unzip it.")]),_v(" "),_c('li',[_v("Open the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("index.html")]),_v(" (in the unzipped report directory) using a browser.")]),_v(" "),_c('li',[_v("If the report was not loaded automatically, click on the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("choose file")]),_v(" button in the shown web page, and select the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("archive.zip")]),_v(" (in the same directory) manually."),_c('br'),_v("\nIf even the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("choose file")]),_v(" button is not showing up, try a different browser.")])])])]),_v(" "),_c('h2',{attrs:{"id":"report-structure"}},[_v("Report structure"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#report-structure","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Here is an example of how a typical report looks like:")]),_v(" "),_c('p',[_c('a',{attrs:{"href":"/RepoSense/images/report-features.png","target":"_self"}},[_c('img',{staticClass:"img-fluid",attrs:{"src":"/RepoSense/images/report-features.png","alt":"report"}})])]),_v(" "),_c('p',[_v("The report is divided into two sections: "),_c('a',{attrs:{"href":"#chart-panel"}},[_c('em',[_c('strong',[_v("Chart panel")])])]),_v(" and the "),_c('a',{attrs:{"href":"#code-panel"}},[_c('em',[_c('strong',[_v("Code panel")])])]),_v(". In some situations, the "),_c('a',{attrs:{"href":"#commits-panel"}},[_c('em',[_c('strong',[_v("Commits panel")])])]),_v(" will appear in place of the "),_c('em',[_v("code panel")]),_v(". All three are explained in the sections below.")]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Links to external webpages (repository link, author's profile, blame view, etc.) is only properly supported when RepoSense analyzes a remote repository belonging to GitHub, GitLab or BitBucket.")])]),_v(" "),_c('h2',{attrs:{"id":"chart-panel"}},[_v("Chart panel"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#chart-panel","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('a',{attrs:{"href":"/RepoSense/images/rampchart.png","target":"_self"}},[_c('img',{staticClass:"img-fluid",attrs:{"src":"/RepoSense/images/rampchart.png","alt":"Ramp Charts"}})]),_c('br')]),_v(" "),_c('p',[_v("The "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Chart panel")]),_v(" (an example is shown above) contains a series of "),_c('em',[_v("ramp chart")]),_v(" + "),_c('em',[_v("contribution bar")]),_v(" pairs, possibly organized into sub-groups, with a "),_c('em',[_v("tool bar")]),_v(" at the top.")]),_v(" "),_c('h4',{attrs:{"id":"ramp-charts"}},[_v("Ramp charts"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#ramp-charts","onclick":"event.stopPropagation()"}})]),_v(" "),_c('box',{attrs:{"type":"definition","seamless":""}},[_c('p',[_c('strong',[_v("Ramp chart")]),_v(": This is a visualization of the frequency and quantity of contributions of an author for a specific repository. Each ramp chart (i.e., light blue rectangle) represents an author's contribution timeline for a particular repository. Contributions appear as ramps in the timeline.")])]),_v(" "),_c('box',{attrs:{"type":"definition","seamless":""}},[_c('p',[_c('strong',[_v("Ramp")]),_v(": The name we use to refer to the triangular saw-tooth-like shape that represents a code contribution. A ramp can represent a single commit, a sum of the commits done in a certain period, depending on the granularity used.")])]),_v(" "),_c('ul',[_c('li',[_v("The ramp's area is proportional to the amount of contribution the author made at that time period.")]),_v(" "),_c('li',[_v("The position of the right edge of the ramp (perpendicular to the blue bar) represents the period (the day or the week) in which the contribution was made.")]),_v(" "),_c('li',[_v("Hover the pointer over a ramp to see the total number of lines represented by that ramp.")]),_v(" "),_c('li',[_v("Click on the ramp to view details about the list of commits represented in the ramp.\n"),_c('ul',[_c('li',[_v("At the commit-level of granularity, it links to the commit in the remote repository.")]),_v(" "),_c('li',[_v("At higher levels of granularity, it displays the list of commits in the Code Panel.")])])]),_v(" "),_c('li',[_v("To make the comparison between two authors easier, the color of the ramps that represent different authors' contributions at the same time period are the same.")]),_v(" "),_c('li',[_v("Ramps representing big contributions can overlap with earlier time periods. This represents the possibility that if the work committed during a specific period is big, it could have started at an earlier time period.")])]),_v(" "),_c('h4',{attrs:{"id":"contribution-bars"}},[_v("Contribution bars"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#contribution-bars","onclick":"event.stopPropagation()"}})]),_v(" "),_c('box',{attrs:{"type":"definition","seamless":""}},[_c('p',[_c('strong',[_v("Contribution bar")]),_v(": It's the bar that appears below each ramp chart. Its length represents the total amount of code contributed by an author during the "),_c('em',[_v("total analysis period")]),_v(".")])]),_v(" "),_c('ul',[_c('li',[_v("Hover over a contribution bar to see the exact amount of the contribution.")]),_v(" "),_c('li',[_v("If an author contributed significantly higher than other authors, the contribution bar could "),_c('em',[_v("overflow")]),_v(" into multiple lines.")])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("We allow contribution bars to overflow into multiple lines (rather than adjust the scale to fit the maximum bar length) to prevent a minority of "),_c('tooltip',{scopedSlots:_u([{key:"content",fn:function(){return [_v("i.e., those contributing an unusually high amount of code")]},proxy:true}])},[_v("outliers")]),_v(" from affecting the scale of the majority.")],1)]),_v(" "),_c('h4',{attrs:{"id":"tool-bar"}},[_v("Tool bar"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#tool-bar","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("The "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Tool Bar")]),_v(" at the top of the Chart panel provides a set of configuration options that control the Chart panel.")]),_v(" "),_c('ul',[_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Search")]),_v(": filters the author and repository by keywords.\n"),_c('ul',[_c('li',[_v("Multiple keywords/terms can be used, separated by spaces.")]),_v(" "),_c('li',[_v("Entries that contain "),_c('em',[_v("any")]),_v(" (not necessarily "),_c('em',[_v("all")]),_v(") of the search terms will be displayed.")]),_v(" "),_c('li',[_v("The keywords used to filter the author and repository are case-insensitive.")]),_v(" "),_c('li',[_v("Starting a search with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("tag:")]),_v(" will filter author and repository by git tags. Similar search rules as above (like separating multiple tag names by space) apply.")])])]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Group by")]),_v(": grouping criteria for the rows of results.\n"),_c('ul',[_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("None")]),_v(": results will not be grouped in any particular way.")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repo/Branch")]),_v(": results will be grouped by repositories and its' associating branches.")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Author")]),_v(": results will be grouped by the name of the author. Contributions made to multiple repositories by a particular author will be grouped under the author.")])])]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Sort groups by")]),_v(": sorting criteria for the main group. See note [1] below.\n"),_c('ul',[_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Group title")]),_v(": groups will be sorted by the title of the group (in bold text) in alphabetical order.")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Contribution")]),_v(": groups will be sorted by the combined contributions within a group, in the order of number of lines added.")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Variance")]),_v(": groups will be sorted by how far the daily contributions are spread out from their average value among all authors involved. A detailed definition of variance is located "),_c('a',{attrs:{"href":"https://en.wikipedia.org/wiki/Variance"}},[_v("here")]),_v(".")])])]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Sort within groups by")]),_v(": sorting criteria within each group.\n"),_c('ul',[_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Title")]),_v(": each group will be internally sorted by its title in alphabetical order.")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Contribution")]),_v(": each group will be internally sorted by individual contributions in the order of number of lines added.")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Variance")]),_v(": each group will be internally sorted by how far the daily contributions are spread out from their average value by each author into a particular repo. A detailed definition of variance is located "),_c('a',{attrs:{"href":"https://en.wikipedia.org/wiki/Variance"}},[_v("here")]),_v(".")])])]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Granularity")]),_v(": the period of time for which commits are aggregated in the Ramp Chart.\n"),_c('ul',[_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Commit")]),_v(": each commit made is shown as one ramp.")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Day")]),_v(": commits within a day (commits made within 00:00 to 23:59) are shown as one ramp.")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Week")]),_v(": commits within a week (from Monday 00:00 to Sunday 23:59) are shown as one ramp.")])])]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Since")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Until")]),_v(": the date range for the Ramp Chart (not applied to the Contribution Bars).")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Reset date range")]),_v(": resets the date range of the Ramp Chart to the default date range.")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Breakdown by file type")]),_v(": toggles the contribution bar to either display the bar by :\n"),_c('ul',[_c('li',[_v("the total lines of codes added (if the checkbox is left unchecked), or")]),_v(" "),_c('li',[_v("a breakdown of the number of lines of codes added to each file type (if the checkbox is checked). More info on note [3] below.")])])]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Merge group")]),_v(": merges all the ramp charts of each group into a single ramp chart; aggregates the contribution of each group.\n"),_c('ul',[_c('li',[_v("viewing of authored code of the group as a whole is available when "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("group by repos")]),_v(".")])])]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Show tags")]),_v(": shows the tags of all the repos under a group")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Trim timeline")]),_v(": trims the starting and ending portion of each ramp where no commits were made; only the part of each ramp where commits were made will be shown.")])]),_v(" "),_c('p',[_v("Notes:"),_c('br'),_v("\n[1] "),_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Sort groups by")])]),_v(": each main group has its own index and percentile according to its ranking position after sorting (e.g., if the groups are sorted by contribution in descending order, a 25% percentile indicates that the group is in the top 25% of the whole cohort in terms of contribution)"),_c('br'),_v(".\n[2] "),_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repo/Branch")])]),_v(": the repo/branch name is constructed as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ORGANIZATION/REPOSITORY[BRANCH]")]),_v(" (e.g., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("reposense/reposense[master]")]),_v(")"),_c('br'),_v("\n[3] The total contribution of each group will get updated based on the checked file types and will be taken into account when the sorting criteria is contribution.")]),_v(" "),_c('box',{attrs:{"type":"tip","seamless":""}},[_c('p',[_c('strong',[_v("RepoSense support "),_c('em',[_v("intelligent")]),_v(" bookmarks")]),_v(": Note how the browser URL changes as you modify settings in the report. If you send that URL to someone else, that person will be able to use that URL to view the report in the same "),_c('em',[_v("view configuration")]),_v(" you had when you copied the URL. For example, "),_c('a',{attrs:{"href":"https://nus-cs2113-ay1920s2.github.io/tp-dashboard/"}},[_v("this URL")]),_v(" and "),_c('a',{attrs:{"href":"https://nus-cs2113-ay1920s2.github.io/tp-dashboard/#search=&sort=groupTitle&sortWithin=title&since=2020-03-01&timeframe=day&mergegroup=true&groupSelect=groupByRepos&breakdown=true"}},[_v("this URL")]),_v(" give two different views of the same report.")])]),_v(" "),_c('h2',{attrs:{"id":"code-panel"}},[_v("Code panel"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#code-panel","onclick":"event.stopPropagation()"}})]),_v(" "),_c('img',{attrs:{"src":"/RepoSense/images/code-panel.png","alt":"code panel","width":"468"}}),_v(" "),_c('p',[_v("The "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Code panel")]),_v(" allows users to see the code attributed to a specific author. Click on the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("")]),_v(" icon beside the author's name in the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Chart panel")]),_v(" to display the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Code panel")]),_v(" on the right.")]),_v(" "),_c('ul',[_c('li',[_v("The Code panel shows the files that contain the author's contributions, sorted by the number of lines written.")]),_v(" "),_c('li',[_v("Select the radio button to enable one of the following 2 filters. Note that only 1 of the 2 filters is active at any time.\n"),_c('ul',[_c('li',[_v("Type file path glob in glob filter to include files matching the glob expression.")]),_v(" "),_c('li',[_v("Select the checkboxes to include files of preferred file extensions.\nThe number right beside the file extension shows the total number of lines written by the author in such file extension files. In contrast, the number inside the parenthesis indicates the number of non-blank lines written by the author.")])])]),_v(" "),_c('li',[_v("Clicking the file title toggles the file content.")]),_v(" "),_c('li',[_v("Clicking the first icon beside the file title opens the history view of the file on the remote repository.")]),_v(" "),_c('li',[_v("Clicking the second icon beside the file title opens the blame view of the file on the remote repository.")]),_v(" "),_c('li',[_v("When using the code panel for a specific author, code attributed to the author is highlighted in green.\n"),_c('ul',[_c('li',[_v("When using the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("merge group")]),_v(" option with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("group by repos")]),_v(", the code panel will consist of multiple authors' contributions. Code attributed to these authors can be differentiated by the highlight colors of the code. The color legend is shown at the top of each file and consists only those authors that edited a particular file.")])])]),_v(" "),_c('li',[_v("Non-trivial code segments that the selected author has not written are hidden by default, but you can toggle them by clicking on the "),_c('span',{staticClass:"dimmed"},[_c('span',{staticClass:"fas fa-plus-circle",attrs:{"aria-hidden":"true"}})]),_v(" icon.")])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Changing binary files, such as images ("),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(".jpg")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(".png")]),_v("), applications ("),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(".exe")]),_v("), zip files ("),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(".zip")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(".rar")]),_v(") and certain document types ("),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(".docx")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(".pptx")]),_v("), is not counted towards the total number of lines of code contributed by an author.")])]),_v(" "),_c('h2',{attrs:{"id":"commits-panel"}},[_v("Commits panel"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#commits-panel","onclick":"event.stopPropagation()"}})]),_v(" "),_c('img',{attrs:{"src":"/RepoSense/images/commits-panel.png","alt":"commits panel","width":"468"}}),_v(" "),_c('p',[_v("The "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Commits panel")]),_v(" allows users to see the commits attributed to a specific author.")]),_v(" "),_c('ul',[_c('li',[_v("To view all commits attributed to an author, locate the author's ramp chart in the chart panel, and click on the "),_c('span',{staticClass:"dimmed"},[_c('span',{staticClass:"fas fa-list-ul",attrs:{"aria-hidden":"true"}})]),_v(" icon above the ramp chart.")]),_v(" "),_c('li',[_v("To view commits of a specific period, locate the author's ramp chart in the chart panel, hold down the "),_c('kbd',[_v("Ctrl")]),_v(" key ("),_c('kbd',[_v("⌘")]),_v(" in MacOS), and click on the start and end positions of the period (on the ramp chart) you want to view. "),_c('br')])]),_v(" "),_c('p',[_c('a',{attrs:{"href":"/RepoSense/images/opening-commits-panel.gif","target":"_self"}},[_c('img',{staticClass:"img-fluid",attrs:{"src":"/RepoSense/images/opening-commits-panel.gif","alt":"Opening commits panel"}})])]),_v(" "),_c('ul',[_c('li',[_v("The commits can be sorted by the date it was committed or by LoC.")]),_v(" "),_c('li',[_v("The tags of the commits will also be displayed on top if any. Clicking on a tag will direct you to the commit having that particular tag.")]),_v(" "),_c('li',[_v("The date range for the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Chart panel")]),_v(" can be updated by clicking on the \"Show ramp chart for this period\" below the name of the author.")]),_v(" "),_c('li',[_v("The ramp chart at the top of the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Commits panel")]),_v(" represents individual commits (not weekly or daily contributions).")]),_v(" "),_c('li',[_v("The commit messages body can be expanded or collapsed by clicking on the "),_c('span',{staticClass:"dimmed"},[_c('span',{staticClass:"fas fa-ellipsis-h",attrs:{"aria-hidden":"true"}})]),_v(" icon beside each commit message title.")]),_v(" "),_c('li',[_v("To promote and encourage the 50/72 rule for commit messages, a dotted vertical line will be shown for:\n"),_c('ul',[_c('li',[_v("Commit message subject that exceeds 50 characters.")]),_v(" "),_c('li',[_v("Commit message body after the 72nd character mark.")])])])])],1)])],1),_v(" "),_c('p'),_v(" "),_c('h1',{attrs:{"id":"2-generate-your-own-reports"}},[_c('thumbnail',{attrs:{"circle":"","background":"#006600","font-color":"white","size":"50"}},[_v("2")]),_v(" "),_c('strong',[_v("Generate")]),_v(" your own reports"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#2-generate-your-own-reports","onclick":"event.stopPropagation()"}})],1),_v(" "),_c('p',[_v("The next step is to generate your own RepoSense reports, either in your computer, or on one of the remote platforms we support.")]),_v(" "),_c('div',{staticClass:"indented-level0"},[_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('span',[_c('span',{staticClass:"glyphicon glyphicon-log-in",attrs:{"aria-hidden":"true"}})]),_v(" "),_c('strong',[_v("Generating reports")])])]},proxy:true}])},[_v(" "),_c('div',[_c('h1',{staticClass:"display-4",attrs:{"id":"generating-a-report"}},[_c('span',[_v("Generating a report")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#generating-a-report","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{staticClass:"lead"},[_c('p',[_v("Let's look at different ways to generate RepoSense reports.")])]),_v(" "),_c('ul',[_c('li',[_c('p',[_c('strong',[_v("If you have Java on your computer")]),_v(", the straight-forward way to generate a report is to use the RepoSense executable to generate the report locally on your computer, as explained in the "),_c('a',{attrs:{"href":"#generating-reports-locally"}},[_c('em',[_v("Generating reports locally")])]),_v(" section below.")])]),_v(" "),_c('li',[_c('p',[_c('strong',[_v("If you don't have Java on your computer or do not wish to run the executable on your computer")]),_v(", some alternatives are provided in the "),_c('a',{attrs:{"href":"#generating-reports-remotely"}},[_c('em',[_v("Generating reports remotely")])]),_v(" section below.")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("RepoSense is built to analyze any type of git repo, remote or local. It works best when analyzing remote repositories hosted on GitHub, GitLab or BitBucket.\nFor other types of repositories, external links are disabled.")])]),_v(" "),_c('h2',{attrs:{"id":"generating-reports-locally"}},[_v("Generating reports locally"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#generating-reports-locally","onclick":"event.stopPropagation()"}})]),_v(" "),_c('ol',[_c('li',[_c('p',[_c('strong',[_v("Ensure you have the prerequisites")]),_v(":")]),_v(" "),_c('ul',[_c('li',[_c('strong',[_v("Java 11")]),_v(" or later ("),_c('a',{attrs:{"href":"https://www.java.com/en/"}},[_v("download "),_c('span',{staticClass:"fas fa-download",attrs:{"aria-hidden":"true"}})]),_v(").")]),_v(" "),_c('li',[_c('strong',[_v("git "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("2.23")])]),_v(" or later on the command line. ("),_c('a',{attrs:{"href":"https://git-scm.com/downloads"}},[_v("download "),_c('span',{staticClass:"fas fa-download",attrs:{"aria-hidden":"true"}})]),_v(")."),_c('br'),_v(" run "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("git --version")]),_v(" in your OS terminal to confirm the version.")])])]),_v(" "),_c('li',[_c('p',[_c('strong',[_v("Download the latest JAR file")]),_v(" from our "),_c('a',{attrs:{"href":"https://github.com/reposense/RepoSense/releases/latest"}},[_v("releases")]),_v(".")])]),_v(" "),_c('li',[_c('p',[_c('strong',[_v("Generate a report")]),_v(": The simplest use case for RepoSense is to generate a report for the recent history of a repo."),_c('br'),_v("\ncommand: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar --repos LIST_OF_REPO_URLS --view")]),_c('br'),_v("\nExamples:")]),_v(" "),_c('ul',[_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar --repos https://github.com/reposense/RepoSense.git --view")]),_v(" (note the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(".git")]),_v(" at the end of the repo URL)")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar --repos https://github.com/reposense/RepoSense.git c:/myRepose/foo/bar --view")]),_v(" analyzes the two specified repos (one remote, one local).")])]),_v(" "),_c('p',[_v("The above commands will analyze the given repo(s) for commits done within "),_c('mark',[_v("the last month")]),_v(" and open the report in your default Browser.")])])]),_v(" "),_c('p',[_c('strong',[_v("To learn how to generate a report using "),_c('tooltip',{scopedSlots:_u([{key:"content",fn:function(){return [_v("e.g., generate a report for a different period, for specific file types, for specific authors, etc.")]},proxy:true}])},[_v("other settings")])],1),_v(", head over to the "),_c('a',{attrs:{"href":"/RepoSense/ug/customizingReports.html"}},[_c('em',[_c('strong',[_v("Customizing reports")])])]),_v(" section.")]),_v(" "),_c('h2',{attrs:{"id":"generating-reports-remotely"}},[_v("Generating reports remotely"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#generating-reports-remotely","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_v("You can generate a RepoSense report remotely without installing/running anything on your computer.")]),_v(" This is particularly useful when you are deciding whether to adopt RepoSense.")]),_v(" "),_c('p',[_c('strong',[_v("The easiest option is to use Netlify.")]),_v(" The instructions are given below.")]),_v(" "),_c('div',{staticClass:"indented-level0"},[_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('span',[_c('span',{staticClass:"glyphicon glyphicon-log-in",attrs:{"aria-hidden":"true"}})]),_v(" Appendix: "),_c('strong',[_v("Using RepoSense with Netlify → Setting up")])])]},proxy:true}])},[_v(" "),_c('div',[_c('box',{attrs:{"type":"warning","seamless":""}},[_c('p',[_v("Note that Netlify has a low limit for free tier users (only 300 "),_c('em',[_v("build minutes")]),_v(" per month as at June 2020 -- a single report generation can take 2-3 build minutes, longer if your report includes many/big repositories).")])]),_v(" "),_c('h2',{attrs:{"id":"setting-up"}},[_v("Setting up"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#setting-up","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('span',{staticClass:"badge bg-dark bigger-level0"},[_v("Step 1")]),_v(" "),_c('strong',[_v("Fork the "),_c('em',[_v("publish-RepoSense")]),_v(" repository")]),_v(" using this "),_c('a',{attrs:{"href":"https://github.com/RepoSense/publish-RepoSense/fork"}},[_v("link")]),_v(". Optionally, you can rename the fork to match your RepoSense report e.g., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("project-code-dashboard")]),_v(".")]),_v(" "),_c('p',[_c('span',{staticClass:"badge bg-dark bigger-level0"},[_v("Step 2")]),_v(" "),_c('strong',[_v("Set up Netlify for your fork")]),_v(" as described in this "),_c('a',{attrs:{"href":"https://www.netlify.com/blog/2016/09/29/a-step-by-step-guide-deploying-on-netlify/"}},[_v("guide")]),_v("."),_c('br'),_v(" "),_c('mark',[_v("You will need to use the following in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Step 5: Configure Your Settings")]),_v(" of that guide")]),_v(":")]),_v(" "),_c('ul',[_c('li',[_v("build command: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("pip install requests && ./run.sh")]),_c('br')]),_v(" "),_c('li',[_v("publish directory: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./reposense-report")])])]),_v(" "),_c('p',[_v("After Netlify finishes building the site, you should be able to see a dummy report at the URL of your Netlify site.")]),_v(" "),_c('p',[_c('span',{staticClass:"badge bg-dark bigger-level0"},[_v("Step 3")]),_v(" "),_c('strong',[_v("Generate the report you want")]),_v(" by updating the settings in your fork.")]),_v(" "),_c('ol',[_c('li',[_v("Go to the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("run.sh")]),_v(" file of your fork (on GitHub).")]),_v(" "),_c('li',[_v("Update the last line (i.e., the command for running RepoSense) to match the report you want to generate:"),_c('br'),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar --repos FULL_REPO_URL")]),_v(" (assuming you want to generate a default report for just one repo)"),_c('br'),_v("\ne.g., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar --repos https://github.com/reposense/RepoSense.git")]),_v(" ("),_c('mark',[_v("note the .git at the end of the repo URL")]),_v(")")]),_v(" "),_c('li',[_v("Commit the file. This will trigger Netlify to rebuild the report.")]),_v(" "),_c('li',[_v("Go to the URL of your Netlify site to see the updated RepoSense report (it might take about 2-5 minutes for Netlify to generate the report).")])])],1)])],1),_v(" "),_c('p'),_v(" "),_c('p',[_c('strong',[_v("You can also use the following options.")]),_v(" While they are more work to set up, they are more suitable as a permanent solution due to their generous free tier.")]),_v(" "),_c('div',{staticClass:"indented-level0"},[_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('span',[_c('span',{staticClass:"glyphicon glyphicon-log-in",attrs:{"aria-hidden":"true"}})]),_v(" Appendix: "),_c('strong',[_v("Using RepoSense with GitHub Actions → Setting up")])])]},proxy:true}])},[_v(" "),_c('div',[_c('div',{staticClass:"lead"},[_c('p',[_v("You can use "),_c('a',{attrs:{"href":"https://github.com/features/actions"}},[_c('em',[_v("GitHub Actions")])]),_v(" (together with other GitHub tools) to automate the generating and publishing of RepoSense reports.")])]),_v(" "),_c('h2',{attrs:{"id":"setting-up-2"}},[_v("Setting up"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#setting-up-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',[_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("The instructions below assume you are using GitHub pages to host your report.")])]),_v(" "),_c('p',[_c('span',{staticClass:"badge bg-dark bigger-level0"},[_v("Step 1")]),_v(" "),_c('strong',[_v("Fork the "),_c('em',[_v("publish-RepoSense")]),_v(" repository")]),_v(" using this "),_c('a',{attrs:{"href":"https://github.com/RepoSense/publish-RepoSense/fork"}},[_v("link")]),_v(". Optionally, you can rename the fork to match your RepoSense report e.g., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("project-code-dashboard")]),_v(".")])],1),_v(" "),_c('p',[_c('span',{staticClass:"badge bg-dark bigger-level0"},[_v("Step 2")]),_v(" "),_c('strong',[_v("Activate GitHub Actions on the forked repository:")])]),_v(" "),_c('ol',[_c('li',[_v("Go to the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Actions")]),_v(" page of your fork of the "),_c('a',{attrs:{"href":"https://github.com/reposense/publish-RepoSense"}},[_v("publish-RepoSense")]),_v(" repo.")]),_v(" "),_c('li',[_v("Click on the green button that says "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("I understand my workflows, go ahead and enable them")]),_v(" to enable GitHub Actions on your new repository.")])]),_v(" "),_c('p',[_c('span',{staticClass:"badge bg-dark bigger-level0"},[_v("Step 3")]),_v(" "),_c('strong',[_v("Update report configuration:")])]),_v(" "),_c('div',[_c('p',[_v("In your fork, edit "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("run.sh")]),_v(" (and if applicable, "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("group-config.csv")]),_v(") to customize the command line parameters or repositories to be analyzed.")]),_v(" "),_c('div',{staticClass:"indented-level0"},[_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('span',[_c('span',{staticClass:"glyphicon glyphicon-log-in",attrs:{"aria-hidden":"true"}})]),_v(" Appendix: "),_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("run.sh")]),_v(" format")])])]},proxy:true}])},[_v(" "),_c('div',[_c('h1',{staticClass:"display-4",attrs:{"id":"appendix-run-sh-format"}},[_c('span',[_v("Appendix: run.sh format")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#appendix-run-sh-format","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{staticClass:"lead"},[_c('p',[_c('a',{attrs:{"href":"https://github.com/reposense/publish-RepoSense/blob/master/run.sh"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("run.sh")])]),_v(" is a script used for automating RepoSense report generation.")])]),_v(" "),_c('h3',{attrs:{"id":"customizing-the-reposense-command"}},[_v("Customizing the RepoSense command"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#customizing-the-reposense-command","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("You can update the RepoSense command (i.e., the last line) in the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("run.sh")]),_v(" to match your needs.")]),_v(" "),_c('div',{staticClass:"indented-level0"},[_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('span',[_c('span',{staticClass:"glyphicon glyphicon-log-in",attrs:{"aria-hidden":"true"}})]),_v(" Appendix: "),_c('strong',[_v("CLI syntax reference")])])]},proxy:true}])},[_v(" "),_c('div',[_c('h1',{staticClass:"display-4",attrs:{"id":"appendix-cli-syntax-reference"}},[_c('span',[_v("Appendix: CLI syntax reference")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#appendix-cli-syntax-reference","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{staticClass:"lead"},[_c('p',[_v("The command "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar")]),_v(" takes several flags.")])]),_v(" "),_c('box',[_c('p',[_c('strong',[_v("Examples")]),_v(":")]),_v(" "),_c('p',[_v("An example of a command using most parameters:"),_c('br'),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar --repos https://github.com/reposense/RepoSense.git --output ./report_folder --since 31/1/2017 --until 31/12/2018 --formats java adoc xml --view --ignore-standalone-config --last-modified-date --timezone UTC+08 --find-previous-authors --analyze-authorship --originality-threshold 0.66")])]),_v(" "),_c('p',[_v("Same command as above but using most parameters in alias format:"),_c('br'),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar -r https://github.com/reposense/RepoSense.git -o ./report_folder -s 31/1/2017 -u 31/12/2018 -f java adoc xml -v -i -l -t UTC+08 -F -A -ot 0.66")])])]),_v(" "),_c('p',[_v("The section below provides explanations for each of the flags.")]),_v(" "),_c('h3',{attrs:{"id":"analyze-authorship-a"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--analyze-authorship")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-A")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#analyze-authorship-a","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--analyze-authorship")])]),_v(": Performs further analysis to distinguish between partial and full credit attribution for\nlines of code assigned to the author.")]),_v(" "),_c('ul',[_c('li',[_v("Default: this feature is turned "),_c('em',[_c('strong',[_v("off")])]),_v(" by default and the author will receive partial credits for all lines of\ncode, as the code lines are at least partial credit but may not qualify for full credit.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-A")]),_v(" (upper case)")]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--analyze-authorship")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-A")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("A darker background colour represents full credit, while a lighter background colour represents partial credit.")]),_v(" "),_c('p',[_v("If the code is attributed to a different author by the user via "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("@@author")]),_v(" tag, then the new author will be given\npartial credit.")])]),_v(" "),_c('h3',{attrs:{"id":"assets-a"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--assets")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-a")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#assets-a","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{attrs:{"id":"section-assets"}},[_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--assets ASSETS_DIRECTORY")])]),_v(": Specifies where to place assets for report generation.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ASSETS_DIRECTORY")]),_v(" The directory containing the assets files. A "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("favicon.ico")]),_v(" file can be placed here to customize the favicon of the dashboard, while a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("title.md")]),_v(" file can be placed to customize the "),_c('a',{attrs:{"href":"https://reposense.org/ug/customizingReports.html#add-a-title"}},[_v("title")]),_v(" of the report using "),_c('a',{attrs:{"href":"https://www.markdownguide.org/basic-syntax/"}},[_v("Markdown syntax")]),_v(".")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-a")])]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--assets ./assets")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-a ./assets")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("If "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--assets")]),_v(" is not specified, RepoSense looks for assets in the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./assets")]),_v(" directory.")])])])],1),_v(" "),_c('h3',{attrs:{"id":"config-c"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--config")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-c")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#config-c","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{attrs:{"id":"section-config"}},[_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--config CONFIG_DIRECTORY")])]),_v(": Specifies that config files located in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("CONFIG_DIRECTORY")]),_v(" should be used to customize the report.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("CONFIG_DIRECTORY")]),_v(" The directory containing the config files. Should contain a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(" file. Optionally, can contain an "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(" file or/and a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("group-config.csv")]),_v(" file or/and a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("report-config.json")]),_v(" file or/and a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("blurbs.md")]),_v(" file.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-c")])]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar --config ./config")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("Cannot be used with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repos")]),_v(". The "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repos")]),_v(" flag will take precedence over this flag.")]),_v(" "),_c('li',[_v("If both "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repos")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--config")]),_v(" are not specified, RepoSense looks for config files in the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./config")]),_v(" directory.")]),_v(" "),_c('li',[_v("Config files must follow "),_c('a',{attrs:{"href":"/RepoSense/ug/configFiles.html"}},[_v("this")]),_v(" format.")])])])],1),_v(" "),_c('h3',{attrs:{"id":"formats-f"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--formats")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-f")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#formats-f","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--formats LIST_OF_FORMATS")])]),_v(": Specifies which file extensions to be included in the analysis.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("LIST_OF_FORMATS")]),_v(" A space-separated list of file extensions that should be included in the analysis."),_c('br'),_v("\nDefault: all file formats")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-f")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--formats css fxml gradle")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-f css fxml gradle")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Binary file formats, such as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("jpg")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("png")]),_v(","),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("exe")]),_v(","),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("zip")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("rar")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("docx")]),_v(", and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("pptx")]),_v(", all will be labelled as the file type "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("binary")]),_v(" in the generated report.")])]),_v(" "),_c('h3',{attrs:{"id":"find-previous-authors-f"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--find-previous-authors")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-F")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#find-previous-authors-f","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--find-previous-authors")])]),_v(": Utilizes Git blame's ignore revisions functionality, RepoSense will attempt to blame the line changes caused by commits in the ignore commit list to the previous authors who altered those lines (if available).")]),_v(" "),_c('ul',[_c('li',[_v("Default: RepoSense will assume that no authors are responsible for the code changes in the lines altered by commits in the ignore commit list.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-F")]),_v(" (uppercase F)")]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--find-previous-authors")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-F")])])]),_v(" "),_c('h3',{attrs:{"id":"help-h"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--help")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-h")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#help-h","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--help")])]),_v(": Shows the help message.")]),_v(" "),_c('ul',[_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-h")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Cannot be used with any other flags. This flag takes precedence over all other flags.")])]),_v(" "),_c('h3',{attrs:{"id":"ignore-standalone-config-i"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--ignore-standalone-config")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-i")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#ignore-standalone-config-i","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--ignore-standalone-config")])]),_v(": Specifies that the standalone config file in the repo should be ignored.")]),_v(" "),_c('ul',[_c('li',[_v("Default: the standalone config file is not ignored")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-i")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--ignore-standalone-config")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-i")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("This flag overrides the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Ignore standalone config")]),_v(" field in the CSV config file.")])]),_v(" "),_c('h3',{attrs:{"id":"ignore-filesize-limit-i"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--ignore-filesize-limit")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-I")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#ignore-filesize-limit-i","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--ignore-filesize-limit")])]),_v(": Specifies that the file size limit (both default and user-defined) should be ignored during the analysis.")]),_v(" "),_c('ul',[_c('li',[_v("Default: the file size limit is not ignored")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-I")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--ignore-filesize-limit")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-I")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("All files are subject to a default file size limit or a custom size limit set by the user. Most files should not be\naffected by the default size limit. This flag can be useful for including files in your report that are affected by\nthe size limit. Note that this flag may result in large report sizes and/or slower report generation.")])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("This flag overrides the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Ignore file size limit")]),_v(" field in the CSV config file.")])]),_v(" "),_c('h3',{attrs:{"id":"last-modified-date-l"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--last-modified-date")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-l")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#last-modified-date-l","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--last-modified-date")])]),_v(": Specifies that the last modified date of each line of code should be added to "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("authorship.json")]),_v(".")]),_v(" "),_c('ul',[_c('li',[_v("Default: the last modified date of each line of code will not be added to "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("authorship.json")])]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-l")]),_v(" (lowercase L)")]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--last-modified-date")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-l")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("Cannot be used with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--shallow-cloning")]),_v(". This may result in an incorrect last modified date.")]),_v(" "),_c('li',[_v("The last modified dates will be in the same timezone specified with the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--timezone")]),_v(" flag.")])])]),_v(" "),_c('h3',{attrs:{"id":"originality-threshold-ot"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--originality-threshold")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-ot")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#originality-threshold-ot","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--originality-threshold [VALUE]")])]),_v(": Specifies the cut-off point for partial and full credit\nin "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--analyze-authorship")]),_v(". Author will be given full credit if their contribution exceeds this threshold, else partial\ncredit is given.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("VALUE")]),_v(" Optional. Acceptable range: [0.0, 1.0]."),_c('br'),_v("\nDefault: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("0.51")])]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-ot")])]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--originality-threshold 0.66")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-ot 0.66")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("Requires "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--analyze-authorship")]),_v(" flag.")]),_v(" "),_c('li',[_v("An author's contribution, or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("originality score")]),_v(", is calculated using Levenshtein Distance (Edit Distance) algorithm.\nWe compare the difference between current code line and its previous versions.")])])]),_v(" "),_c('h3',{attrs:{"id":"output-o"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--output")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-o")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#output-o","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--output OUTPUT_DIRECTORY")])]),_v(": Indicates where to save the report generated.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("OUTPUT_DIRECTORY")]),_v(" The location for the generated "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("reposense-report")]),_v(" folder."),_c('br'),_v("\nDefault: current directory")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-o")])]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--output ./foo")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-o ./foo")]),_v(" (the report will be in the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./foo/reposense-report")]),_v(" folder)")])]),_v(" "),_c('h3',{attrs:{"id":"period-p"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--period")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-p")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#period-p","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--period PERIOD")])]),_v(": Specifies the period of analysis window.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("PERIOD")]),_v(" The period of analysis window, in the format "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("nd")]),_v(" (for n days) or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("nw")]),_v(" (for n weeks). It is used to calculate end date if only start date is specified, or calculate end date if only start date is specified.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-p")])]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--period 30d")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--period 4w")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("If both start date and end date are not specified, the date of generating the report will be taken as the end date.")]),_v(" "),_c('li',[_v("May analyze the incorrect date range if used with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since d1")]),_v(". The program will throw a warning.")]),_v(" "),_c('li',[_v("Cannot be used with both "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--until")]),_v(". The program will throw an exception.")])])]),_v(" "),_c('h3',{attrs:{"id":"repo-repos-r"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repo")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repos")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-r")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#repo-repos-r","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repo REPO_LOCATION")])]),_v(": Specifies which repositories to analyze.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("REPO_LOCATION")]),_v(" A list of URLs or the disk location of the git repositories to analyze, separated by spaces.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-r")])]),_v(" "),_c('li',[_v("Examples:\n"),_c('ul',[_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repos https://github.com/reposense/RepoSense.git")])]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repo https://github.com/reposense/RepoSense.git c:/myRepose/foo/bar")]),_v(": analyzes the two specified repos (one remote, one local) and generates one report containing details of both.")])])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Cannot be used with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--config")]),_v(". This flag takes precedence over "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--config")]),_v(".")])]),_v(" "),_c('h3',{attrs:{"id":"shallow-cloning-s"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--shallow-cloning")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-S")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#shallow-cloning-s","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--shallow-cloning")])]),_v(": Clones repositories using Git's shallow cloning functionality, which can significantly reduce the time taken to clone large repositories. However, the flag should not be used for smaller repositories where the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(".git")]),_v(" file is smaller than 500 MB, as it would create overhead.")]),_v(" "),_c('ul',[_c('li',[_v("Default: RepoSense does not clone repositories using Git's shallow cloning functionality.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-S")]),_v(" (uppercase S)")]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--shallow-cloning")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-S")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Cannot be used with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--last-modified-date")]),_v(". This may result in an incorrect last modified date.")])]),_v(" "),_c('h3',{attrs:{"id":"since-s"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-s")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#since-s","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since START_DATE")])]),_v(": Specifies the start date for the period to be analyzed.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("START_DATE")]),_v(" The first day of the period to be analyzed, in the format "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("DD/MM/YYYY")]),_v("."),_c('br'),_v("\nDefault: one month before the current date")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-s")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since 21/10/2017")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-s 21/10/2017")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("If the start date is not specified, only commits made one month before the end date (if specified) or the date of generating the report, will be captured and analyzed.")]),_v(" "),_c('li',[_v("If "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("d1")]),_v(" is specified as the start date ("),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since d1")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-s d1")]),_v("), then the program will search for the earliest commit date of all repositories and use that as the start date.")]),_v(" "),_c('li',[_v("If "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("d1")]),_v(" is specified together with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--period")]),_v(", then the program will warn that the date range being analyzed may be incorrect.")])])]),_v(" "),_c('h3',{attrs:{"id":"timezone-t"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--timezone")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-t")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#timezone-t","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--timezone ZONE_ID")])]),_v(": Indicates the timezone to be used for the analysis.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ZONE_ID")]),_v(" The timezone in the format "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ZONE_ID[±hh[mm]]")]),_v("."),_c('br'),_v("\nDefault: system's default timezone")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-t")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--timezone UTC+08")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-t UTC-1030")])])]),_v(" "),_c('h3',{attrs:{"id":"until-u"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--until")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-u")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#until-u","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--until END_DATE")])]),_v(": Specifies the end date of the analysis period.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("END_DATE")]),_v(" The last date of the period to be analyzed, in the format "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("DD/MM/YYYY")]),_v("."),_c('br'),_v("\nDefault: current date")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-u")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--until 21/10/2017")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-u 21/10/2017")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Note: If the end date is not specified, the date of generating the report will be taken as the end date.")])]),_v(" "),_c('h3',{attrs:{"id":"version-v"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--version")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-V")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#version-v","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--version")])]),_v(": Shows the version of RepoSense.")]),_v(" "),_c('ul',[_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-V")]),_v(" (upper case)")])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Cannot be used with any other flags. This flag takes precedence over all other flags other than "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--help")]),_v(".")])]),_v(" "),_c('h3',{attrs:{"id":"view-v"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--view")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-v")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#view-v","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--view [REPORT_FOLDER]")])]),_v(": Specifies that the report should be opened in the default browser.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("REPORT_FOLDER")]),_v(" Optional. If specified, no analysis will be performed and the report specified by the argument will be opened."),_c('br'),_v("\nDefault: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./reposense-report")])]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-v")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--view")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-v")])])])],1)])],1),_v(" "),_c('p'),_v(" "),_c('h3',{attrs:{"id":"specifying-which-version-of-reposense-to-use"}},[_v("Specifying which version of RepoSense to use"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#specifying-which-version-of-reposense-to-use","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Depending on which version you wish to use for report generation, add one of the following flags to the line "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./get-reposense.py")]),_v(" in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("run.sh")]),_v(" (e.g., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./get-reposense.py --release")]),_v("):")]),_v(" "),_c('ul',[_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--release")]),_v(": Use the latest release (Stable)")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--master")]),_v(": Use the latest version of the master branch")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--tag TAG")]),_v(" (e.g. "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--tag v1.6.1")]),_v("): Use the version identified by the Git tag given")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--commit COMMIT")]),_v(" (e.g. "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--commit abc123")]),_v("): Use the version identified by the Git commit SHA given")])])])])],1),_v(" "),_c('p'),_v(" "),_c('div',{staticClass:"indented-level0"},[_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('span',[_c('span',{staticClass:"glyphicon glyphicon-log-in",attrs:{"aria-hidden":"true"}})]),_v(" Appendix: "),_c('strong',[_v("Config files format")])])]},proxy:true}])},[_v(" "),_c('div',[_c('h1',{staticClass:"display-4",attrs:{"id":"appendix-config-files-format"}},[_c('span',[_v("Appendix: Config files format")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#appendix-config-files-format","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{staticClass:"lead"},[_c('p',[_v("Given below are the details of the various config files used by RepoSense.")])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_c('strong',[_v("RepoSense ignores the order of column headers in the CSV config files. However, the spelling of the column headers must match the specified headers exactly, or the column would be ignored by RepoSense.")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_c('strong',[_v("A value in a config file is optional to provide unless it is specified as "),_c('span',{staticClass:"badge bg-danger"},[_v("mandatory")])]),_v(".")])]),_v(" "),_c('h2',{attrs:{"id":"repo-config-csv"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#repo-config-csv","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(" file contains repo-level config data.")]),_v(" Each row represents a repository's configuration ("),_c('a',{attrs:{"href":"/RepoSense/ug/repo-config.csv"}},[_v("example")]),_v(").")]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Column Name")]),_v(" "),_c('th',[_v("Explanation")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_v("Repository's Location "),_c('span',{staticClass:"badge bg-danger"},[_v("mandatory")])]),_v(" "),_c('td',[_v("The "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Remote Repo URL")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Disk Path")]),_v(" to the git repository e.g., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://github.com/foo/bar.git")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("C:\\Users\\user\\Desktop\\GitHub\\foo\\bar")])])]),_v(" "),_c('tr',[_c('td',[_v("Branch")]),_v(" "),_c('td',[_v("The branch to analyze in the target repository e.g., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("master")]),_v(". Default: the default branch of the repo")])]),_v(" "),_c('tr',[_c('td',[_v("File formats"),_c('sup',[_v("*+")])]),_v(" "),_c('td',[_v("The file extensions to analyze. Binary file formats, such as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("png")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("jpg")]),_v(", will be automatically labelled as the file type "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("binary")]),_v(" in the generated report. Default: all file formats")])]),_v(" "),_c('tr',[_c('td',[_v("Find Previous Authors")]),_v(" "),_c('td',[_v("Enter "),_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("yes")])]),_v(" to utilize Git blame's ignore revisions functionality, RepoSense will attempt to blame the line changes caused by commits in the ignore commit list to the previous authors who altered those lines (if available).")])]),_v(" "),_c('tr',[_c('td',[_v("Ignore Glob List"),_c('sup',[_v("*+")])]),_v(" "),_c('td',[_v("The list of file path globs to ignore during analysis for each author e.g., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("test/**;temp/**")]),_v(". Refer to the "),_c('a',{attrs:{"href":"https://docs.oracle.com/javase/tutorial/essential/io/fileOps.html#glob"}},[_c('em',[_v("glob format")])]),_v(" for the path glob syntax.")])]),_v(" "),_c('tr',[_c('td',[_v("Ignore standalone config")]),_v(" "),_c('td',[_v("To ignore the standalone config file (if any) in target repository, enter "),_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("yes")])]),_v(". If the cell is empty, the standalone config file in the repo (if any) will take precedence over configurations provided in the csv files.")])]),_v(" "),_c('tr',[_c('td',[_v("Ignore Commits List"),_c('sup',[_v("*+")])]),_v(" "),_c('td',[_v("The list of commits to ignore during analysis. For accurate results, the commits should be provided with their full hash. Additionally, a range of commits can be specified using the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("..")]),_v(" notation e.g. "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("abc123..def456")]),_v(" (both inclusive).")])]),_v(" "),_c('tr',[_c('td',[_v("Ignore Authors List"),_c('sup',[_v("*+")])]),_v(" "),_c('td',[_v("The list of authors to ignore during analysis. Authors should be specified by their "),_c('a',{attrs:{"href":"#a-note-about-git-author-name"}},[_v("Git Author Name")]),_v(".")])]),_v(" "),_c('tr',[_c('td',[_v("Shallow Cloning")]),_v(" "),_c('td',[_v("Enter "),_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("yes")])]),_v(" to clone the repository using Git's shallow cloning functionality. This option can significantly reduce the time taken to clone large repositories. However, the option should ideally be disabled for smaller repositories where the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(".git")]),_v(" file is smaller than 500 MB, as it would create overhead.")])]),_v(" "),_c('tr',[_c('td',[_v("File Size Limit"),_c('sup',[_v("+")])]),_v(" "),_c('td',[_v("Enter a file size limit for the repository in bytes as a single number without units (for a size limit of 1MB for example, enter 1000000). This file size limit will override the default file size limit (500KB). Files exceeding the file size limit will be marked as ignored and only the file name and line count will be reflected in the report.")])]),_v(" "),_c('tr',[_c('td',[_v("Ignore File Size Limit")]),_v(" "),_c('td',[_v("Enter "),_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("yes")])]),_v(" to ignore both the default file size limit and the file size limit possibly set by the user in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(".")])]),_v(" "),_c('tr',[_c('td',[_v("Skip Ignored File Analysis")]),_v(" "),_c('td',[_v("Enter "),_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("yes")])]),_v(" to ignore analysis of files exceeding the file size limit entirely. If file analysis is skipped, all information about the file will be omitted from the generated report. This option can significantly improve report generation time.")])])])])]),_c('box',{attrs:{"type":"info","seamless":""}},[_v("\nThe Shallow Cloning option is incompatible with the \"--last-modified-date\" CLI flag.\n")]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_v("\nIf Ignore File Size Limit is yes, the File Size Limit and Skip Ignored File Analysis columns are ignored.\n")]),_v(" "),_c('p',[_c('sup',[_v("* "),_c('strong',[_v("Multi-value column")]),_v(": multiple values can be entered in this column using a semicolon "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(";")]),_v(" as the separator.")]),_c('br'),_v(" "),_c('sup',[_v("+ "),_c('strong',[_v("Overrideable column")]),_v(": prepend with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("override:")]),_v(" to use entered value(s) instead of value(s) from standalone config.")])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("When using "),_c('a',{attrs:{"href":"#config-json-standalone-config-file"}},[_v("standalone config")]),_v(" (if it is not ignored), it is possible to override specific values from the standalone config by prepending the entered value with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("override:")]),_v(".")])]),_v(" "),_c('h2',{attrs:{"id":"author-config-csv"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#author-config-csv","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Optionally, you can use an "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(" (which should be in the same directory as the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(" file) to provide more details about the authors to analyze ("),_c('a',{attrs:{"href":"/RepoSense/ug/author-config.csv"}},[_v("example")]),_v("). It should contain the following columns:")]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Column Name")]),_v(" "),_c('th',[_v("Explanation")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_v("Repository's Location"),_c('sup',[_v("*")])]),_v(" "),_c('td',[_v("Same as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(". Default: all the repos in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(".")])]),_v(" "),_c('tr',[_c('td',[_v("Branch")]),_v(" "),_c('td',[_v("The branch to analyze for this author, e.g., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("master")]),_v(". Default: the author will be bound to all the repos in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(" that has the same repo's location, regardless of branch.")])]),_v(" "),_c('tr',[_c('td',[_v("Author's Git Host ID"),_c('sup',[_v("#")]),_v(" "),_c('span',{staticClass:"badge bg-danger"},[_v("mandatory")])]),_v(" "),_c('td',[_v("Username of the target author's profile on GitHub, GitLab or Bitbucket, e.g."),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("JohnDoe")]),_v(".")])]),_v(" "),_c('tr',[_c('td',[_v("Author's Emails"),_c('sup',[_v("*")])]),_v(" "),_c('td',[_v("Associated emails of the author. For GitHub users, this can be found in your "),_c('a',{attrs:{"href":"https://github.com/settings/emails"}},[_v("GitHub settings")]),_v(".")])]),_v(" "),_c('tr',[_c('td',[_v("Author's Display Name")]),_v(" "),_c('td',[_v("The name to display for the author. Default: author's username.")])]),_v(" "),_c('tr',[_c('td',[_v("Author's Git Author Name"),_c('sup',[_v("*")])]),_v(" "),_c('td',[_v("The meaning of "),_c('em',[_v("Git Author Name")]),_v(" is explained in "),_c('a',{attrs:{"href":"#a-note-about-git-author-name"}},[_c('em',[_v("A note about git author name")])]),_v(".")])]),_v(" "),_c('tr',[_c('td',[_v("Ignore Glob List"),_c('sup',[_v("*")])]),_v(" "),_c('td',[_v("Files to ignore for this author, in addition to files ignored by the patterns specified in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(". The path glob syntax is the same as that of Ignore Glob List in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(".")])])])])]),_c('p',[_c('sup',[_v("* "),_c('strong',[_v("Multi-value column")]),_v(": multiple values can be entered in this column using a semicolon "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(";")]),_v(" as the separator.")]),_v(" "),_c('br'),_v(" "),_c('sup',[_v("# For backward compatibility, "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Author's GitHub ID")]),_v(" is still accepted as the header in place of "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Author's Git Host ID")]),_v(".")])]),_v(" "),_c('p',[_v("If "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(" is not given and the repo has not provided author details in a standalone config file, all the authors of the repositories within the date range specified (if any) will be analyzed.")]),_v(" "),_c('p',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(" has some advanced syntax that can help to reduce duplication of the author's information. The syntax guide is given below:")]),_v(" "),_c('div',{staticClass:"indented-level0"},[_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('span',[_c('span',{staticClass:"glyphicon glyphicon-log-in",attrs:{"aria-hidden":"true"}})]),_v(" Appendix: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(" advanced syntax")])]},proxy:true}])},[_v(" "),_c('div',[_c('h1',{staticClass:"display-4",attrs:{"id":"appendix-author-config-csv-advanced-syntax"}},[_c('span',[_v("Appendix: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(" advanced syntax")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#appendix-author-config-csv-advanced-syntax","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{staticClass:"lead"},[_c('p',[_v("Given below are the advanced syntax available for "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(".")])]),_v(" "),_c('h2',{attrs:{"id":"multiple-repository-s-location-per-author"}},[_v("Multiple "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repository's Location")]),_v(" per author"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#multiple-repository-s-location-per-author","onclick":"event.stopPropagation()"}})]),_v(" "),_c('h4',{attrs:{"id":"specifying-multiple-repository-s-location"}},[_v("Specifying multiple "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repository's Location")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#specifying-multiple-repository-s-location","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("To specify multiple "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repository's Location")]),_v(" in a single row, we can use a semicolon "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(";")]),_v(" as a separator.")]),_v(" "),_c('p',[_v("Below is an example:")]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Repository's Location")]),_v(" "),_c('th',[_v("Branch")]),_v(" "),_c('th',[_v("Author's Git Host ID")]),_v(" "),_c('th',[_v("... Hidden columns")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://github.com/reposense/RepoSense.git;https://github.com/MarkBind/markbind.git")])]),_v(" "),_c('td',[_v("master")]),_v(" "),_c('td',[_v("sikai00")]),_v(" "),_c('td',[_v("--")])])])])]),_c('p',[_v("We have now furnished author details for both repositories in a single row, instead of having two individual rows per "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repository's Location")]),_v(".")]),_v(" "),_c('br'),_v(" "),_c('h4',{attrs:{"id":"specifying-repository-s-location-with-one-or-more-specific-branches"}},[_v("Specifying "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repository's Location")]),_v(" with one or more specific branches"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#specifying-repository-s-location-with-one-or-more-specific-branches","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("To list out one or more branches for a particular "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repository's Location")]),_v(", we can use a pipe "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("|")]),_v(" separator to demarcate the different branches.")]),_v(" "),_c('p',[_v("Below is an example:")]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Repository's Location")]),_v(" "),_c('th',[_v("Branch")]),_v(" "),_c('th',[_v("Author's Git Host ID")]),_v(" "),_c('th',[_v("... Hidden columns")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://github.com/reposense/RepoSense.git~master|release|cypress")])]),_v(" "),_c('td',[_v("master")]),_v(" "),_c('td',[_v("sikai00")]),_v(" "),_c('td',[_v("--")])])])])]),_c('p',[_v("We have now provided author details for three different branches in a single repo, using a single row.")]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("The branch specified through the delimiter syntax will take precedence over the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Branch")]),_v(" column.")])]),_v(" "),_c('h2',{attrs:{"id":"using-github-branch-url-as-repository-s-location"}},[_v("Using GitHub branch URL as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repository's Location")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#using-github-branch-url-as-repository-s-location","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("We can also use GitHub branch URL as copied from the address bar directly, to be able to quickly use the URL to specify the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repository's Location")]),_v(" and a specific "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Branch")]),_v(" at the same time.")]),_v(" "),_c('p',[_v("Below is an example:")]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Repository's Location")]),_v(" "),_c('th',[_v("Branch")]),_v(" "),_c('th',[_v("Author's Git Host ID")]),_v(" "),_c('th',[_v("... Hidden columns")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://github.com/reposense/RepoSense/tree/release")])]),_v(" "),_c('td'),_v(" "),_c('td',[_v("sikai00")]),_v(" "),_c('td',[_v("--")])])])])]),_c('p',[_v("There is no need to specify the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Branch")]),_v(" column now, as we have specified it through the GitHub branch URL.")]),_v(" "),_c('box',{attrs:{"type":"warning","seamless":""}},[_c('p',[_v("GitLab and BitBucket branch URL are not supported at the moment.")])]),_v(" "),_c('h2',{attrs:{"id":"combining-the-advanced-syntax"}},[_v("Combining the advanced syntax"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#combining-the-advanced-syntax","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("It is possible to combine the above-mentioned advanced syntax. By doing so, we can go from:")]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Repository's Location")]),_v(" "),_c('th',[_v("Branch")]),_v(" "),_c('th',[_v("Author's Git Host ID")]),_v(" "),_c('th',[_v("... Hidden columns")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://github.com/MarkBind/markbind/tree/vue3-migration")])]),_v(" "),_c('td'),_v(" "),_c('td',[_v("sikai00")]),_v(" "),_c('td',[_v("--")])]),_v(" "),_c('tr',[_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://github.com/reposense/RepoSense.git")])]),_v(" "),_c('td',[_v("master")]),_v(" "),_c('td',[_v("sikai00")]),_v(" "),_c('td',[_v("--")])]),_v(" "),_c('tr',[_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://github.com/reposense/RepoSense.git")])]),_v(" "),_c('td',[_v("cypress")]),_v(" "),_c('td',[_v("sikai00")]),_v(" "),_c('td',[_v("--")])])])])]),_c('p',[_v("to:")]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Repository's Location")]),_v(" "),_c('th',[_v("Branch")]),_v(" "),_c('th',[_v("Author's Git Host ID")]),_v(" "),_c('th',[_v("... Hidden columns")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://github.com/MarkBind/markbind/tree/vue3-migration;https://github.com/reposense/RepoSense.git~master|cypress")])]),_v(" "),_c('td'),_v(" "),_c('td',[_v("sikai00")]),_v(" "),_c('td',[_v("--")])])])])]),_c('br')],1)])],1),_v(" "),_c('p'),_v(" "),_c('h2',{attrs:{"id":"group-config-csv"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("group-config.csv")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#group-config-csv","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Optionally, you can provide a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("group-config.csv")]),_v("(which should be in the same directory as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(" file) to provide details on any custom groupings for files in specified repositories ("),_c('a',{attrs:{"href":"/RepoSense/ug/group-config.csv"}},[_v("example")]),_v("). It should contain the following columns:")]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Column Name")]),_v(" "),_c('th',[_v("Explanation")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_v("Repository's Location")]),_v(" "),_c('td',[_v("Same as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(". Default: all the repos in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")])])]),_v(" "),_c('tr',[_c('td',[_v("Group Name "),_c('span',{staticClass:"badge bg-danger"},[_v("mandatory")])]),_v(" "),_c('td',[_v("Name of the group, e.g.,"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("test")]),_v(".")])]),_v(" "),_c('tr',[_c('td',[_v("Globs * "),_c('span',{staticClass:"badge bg-danger"},[_v("mandatory")])]),_v(" "),_c('td',[_v("The list of file path globs to include for specified group, e.g.,"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("**/test/*;**.java")]),_v(".")])])])])]),_c('p',[_c('sup',[_v("* "),_c('strong',[_v("Multi-value column")]),_v(": multiple values can be entered in this column using a semicolon "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(";")]),_v(" as the separator.")])]),_v(" "),_c('p',[_v("Note that a file in a given repository should only be tagged to one group. "),_c('br'),_v("\ne.g.: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("example.java")]),_v(" in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("example-repo")]),_v(" can either be in the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("test")]),_v(" group or the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("code")]),_v(" group, but not in both "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("test")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("code")]),_v(" group. If multiple groups are specified for a given file, the latter group (i.e., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("code")]),_v(" group) is set for the file.")]),_v(" "),_c('h2',{attrs:{"id":"report-config-json"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("report-config.json")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#report-config-json","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("You can optionally use "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("report-config.json")]),_v(" to customize report generation by providing the following information. ("),_c('a',{attrs:{"href":"/RepoSense/ug/report-config.json"}},[_v("example")]),_v(")")]),_v(" "),_c('p',[_c('strong',[_v("Fields to provide")]),_v(":")]),_v(" "),_c('ul',[_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("title")]),_v(": Title of the generated report, which is also the title of the deployed dashboard. Default: \"RepoSense Report\"")])]),_v(" "),_c('div',{attrs:{"id":"section-standalone"}},[_c('h2',{attrs:{"id":"config-json-standalone-config-file"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("config.json")]),_v(" (standalone config file)"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#config-json-standalone-config-file","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Repo owners can provide the following additional information to RepoSense using a config file that we call the "),_c('strong',[_c('em',[_v("standalone config file")])]),_v(":")]),_v(" "),_c('ul',[_c('li',[_v("which files/authors/commits to analyze/omit")]),_v(" "),_c('li',[_v("which git and git host usernames belong to which authors")]),_v(" "),_c('li',[_v("the display of an author")])]),_v(" "),_c('p',[_v("To use this feature, add a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("_reposense/config.json")]),_v(" to the root of your repo using the format in the example below ("),_c('a',{attrs:{"href":"https://github.com/reposense/RepoSense/blob/master/_reposense/config.json"}},[_v("another example")]),_v(") and "),_c('strong',[_v("commit it")]),_v(" (reason: RepoSense can see committed code only):")]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"no-line-numbers hljs json"}},[_c('span',[_v("{\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"ignoreGlobList\"")]),_v(": ["),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"about-us/**\"")]),_v(", "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"**index.html\"")]),_v("],\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"formats\"")]),_v(": ["),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"html\"")]),_v(", "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"css\"")]),_v("],\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"ignoreCommitList\"")]),_v(": ["),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"90018e49f129ce7e0abdc8b18e91c9813588c601\"")]),_v(", "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"67890def\"")]),_v(", "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"abc123..def456\"")]),_v("],\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"ignoreAuthorList\"")]),_v(": ["),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"charlie\"")]),_v("],\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"authors\"")]),_v(":\n")]),_c('span',[_v(" [\n")]),_c('span',[_v(" {\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"gitId\"")]),_v(": "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"alice\"")]),_v(",\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"emails\"")]),_v(": ["),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"alice@example.com\"")]),_v(", "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"alicet@example.com\"")]),_v("],\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"displayName\"")]),_v(": "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"Alice T.\"")]),_v(",\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"authorNames\"")]),_v(": ["),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"AT\"")]),_v(", "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"A\"")]),_v("],\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"ignoreGlobList\"")]),_v(": ["),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"**.css\"")]),_v("]\n")]),_c('span',[_v(" },\n")]),_c('span',[_v(" {\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"gitId\"")]),_v(": "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"bob\"")]),_v("\n")]),_c('span',[_v(" }\n")]),_c('span',[_v(" ]\n")]),_c('span',[_v("}\n")])])]),_c('p',[_v("Note: all fields are optional unless specified otherwise.")]),_v(" "),_c('p',[_c('strong',[_v("Fields to provide "),_c('em',[_v("repository-level")]),_v(" info")]),_v(":")]),_v(" "),_c('ul',[_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ignoreGlobList")]),_v(": Folders/files to ignore, specified using the "),_c('a',{attrs:{"href":"https://docs.oracle.com/javase/tutorial/essential/io/fileOps.html#glob"}},[_c('em',[_v("glob format")])]),_v(".")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("formats")]),_v(": File formats to analyze. Binary file formats, such as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("png")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("jpg")]),_v(", will be automatically labelled as the file type "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("binary")]),_v(" in the generated report. Default: all file formats")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ignoreCommitList")]),_v(": The list of commits to ignore during analysis. For accurate results, the commits should be provided with their full hash. Additionally, a range of commits can be specified using the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("..")]),_v(" notation e.g. "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("abc123..def456")]),_v(" (both inclusive).")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ignoreAuthorList")]),_v(": The list of authors to ignore during analysis. Authors specified in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("authors")]),_v(" field or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(" will be also be omitted if they are in this list. Authors should be specified by their "),_c('a',{attrs:{"href":"#a-note-about-git-author-name"}},[_v("Git Author Name")]),_v(".")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("fileSizeLimit")]),_v(": A file size limit for the repository in bytes as a single number without units, that will override the default file size limit. If not specified, the default file size limit will continue to be used.")])]),_v(" "),_c('p',[_c('strong',[_v("Fields to provide "),_c('em',[_v("author-level")]),_v(" info")]),_v(":"),_c('br'),_v("\nNote: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("authors")]),_v(" field should contain "),_c('em',[_v("all")]),_v(" authors that should be captured in the analysis.")]),_v(" "),_c('ul',[_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("gitId")]),_v(": Username of the author. "),_c('span',{staticClass:"badge bg-danger"},[_v("mandatory")]),_v(" field.")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("emails")]),_v(": Associated git emails of the author. For GitHub, this can be found in your "),_c('a',{attrs:{"href":"https://github.com/settings/emails"}},[_v("GitHub settings")]),_v(".")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("displayName")]),_v(": Name to display on the report for this author.")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("authorNames")]),_v(": Git Author Name(s) used in the author's commits. By default, RepoSense assumes an author would use their remote Git Host username as the Git username too. The meaning of "),_c('em',[_v("Git Author Name")]),_v(" is explained in "),_c('a',{attrs:{"href":"#a-note-about-git-author-name"}},[_c('em',[_v("A note about git author name")])]),_v(".")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ignoreGlobList")]),_v(": "),_c('em',[_v("Additional")]),_v(" (i.e. on top of the repo-level "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ignoreGlobList")]),_v(") folders/files to ignore for a specific author. The path glob syntax is specified by the "),_c('a',{attrs:{"href":"https://docs.oracle.com/javase/tutorial/essential/io/fileOps.html#glob"}},[_c('em',[_v("glob format")])]),_v(". In the example above, the actual "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ignoreGlobList")]),_v(" for "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("alice")]),_v(" would be "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("[\"about-us/**\", \"**index.html\", \"**.css\"]")]),_v(".")])]),_v(" "),_c('p',[_v("To verify your standalone configuration is as intended, add the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("_reposense/config.json")]),_v(" to your local copy of repo and run RepoSense against it as follows:"),_c('br')]),_v(" "),_c('ul',[_c('li',[_v("Format: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar --repo LOCAL_REPO_LOCATION")]),_v(" "),_c('br')]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar --repo c:/myRepose/foo/bar")]),_c('br'),_v("\nAfter that, view the report to see if the configuration you specified in the config file is being reflected correctly in the report.")])]),_v(" "),_c('h2',{attrs:{"id":"a-note-about-git-author-name"}},[_v("A note about git author name"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#a-note-about-git-author-name","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Git Author Name")]),_v(" refers to the customizable author's display name set in the local "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(".gitconfig")]),_v(" file. For example, in the Git Log's display:")]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"no-line-numbers hljs"}},[_c('span',[_v("...\n")]),_c('span',[_v("commit cd7f610e0becbdf331d5231887d8010a689f87c7\n")]),_c('span',[_v("Author: ConfiguredAuthorName \n")]),_c('span',[_v("Date: Fri Feb 9 19:14:41 2018 +0800\n")]),_c('span',[_v("\n")]),_c('span',[_v(" Make some changes to show my new author's name\n")]),_c('span',[_v("\n")]),_c('span',[_v("commit e3f699fd4ef128eebce98d5b4e5b3bb06a512f49\n")]),_c('span',[_v("Author: ActualGitHostId \n")]),_c('span',[_v("Date: Fri Feb 9 19:13:13 2018 +0800\n")]),_c('span',[_v("\n")]),_c('span',[_v(" Initial commit\n")]),_c('span',[_v(" ...\n")])])]),_c('p',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ActualGitHostId")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ConfiguredAuthorName")]),_v(" are both "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Git Author Name")]),_v(" of the same author."),_c('br'),_v("\nTo find the author name that you are currently using for your current git repository, run the following command within your git repository:")]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"no-line-numbers hljs"}},[_c('span',[_v("git config user.name\n")])])]),_c('p',[_v("To set the author name to the value you want (e.g., to set it to your GitHub username) for your current git repository, you can use the following command ("),_c('a',{attrs:{"href":"https://www.git-tower.com/learn/git/faq/change-author-name-email"}},[_v("more info")]),_v("):")]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"no-line-numbers hljs"}},[_c('span',[_v("git config user.name \"YOUR_AUTHOR_NAME”\n")])])]),_c('p',[_v("To set the author name to use a default value you want for future git repositories, you can use the following command:")]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"no-line-numbers hljs"}},[_c('span',[_v("git config --global user.name \"YOUR_AUTHOR_NAME”\n")])])]),_c('p',[_v("RepoSense expects the Git Author Name to be the same as author's username on the Git hosting platform (GitHub, GitLab, BitBucket). If an author's "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Git Author Name")]),_v(" is different from their username on the Git hosting platform, the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Git Author Name")]),_v(" needs to be specified in the standalone config file. If the author has more than one "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Git Author Name")]),_v(", multiple values can be entered too.")]),_v(" "),_c('box',{attrs:{"type":"warning","seamless":""}},[_c('p',[_v("Note: Symbols such as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("\"")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("!")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("/")]),_v(" etc. in your author name will be omitted, which may reduce the accuracy of the analysis if 2 names in the repository are approximately similar.")])])],1),_v(" "),_c('div',{attrs:{"id":"section-blurbs"}},[_c('h2',{attrs:{"id":"blurbs-md"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("blurbs.md")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#blurbs-md","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("You can optionally use "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("blurbs.md")]),_v(" to add blurbs in Markdown syntax for repository branches. These blurbs will be seen when grouping by "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repo/Branch")]),_v(". ("),_c('a',{attrs:{"href":"https://github.com/reposense/RepoSense/blob/master/docs/ug/blurbs.md"}},[_v("example")]),_v(")")]),_v(" "),_c('p',[_c('strong',[_v("Format")]),_v(":")]),_v(" "),_c('ul',[_c('li',[_v("First line in section: Link to the repository branch.")]),_v(" "),_c('li',[_v("Second line onwards: Blurb content.")]),_v(" "),_c('li',[_v("Delimiter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("")]),_v(". Everything on the line after the delimiter will be ignored.")])])])],1)])],1),_v(" "),_c('p')]),_v(" "),_c('p',[_c('span',{staticClass:"badge bg-dark bigger-level0"},[_v("Step 4")]),_v(" "),_c('strong',[_v("View the generated report:")])]),_v(" "),_c('p',[_v("To access your regenerated RepoSense report, go to the settings of your fork in GitHub, under "),_c('strong',[_v("GitHub Pages")]),_v(" section, look for "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Your site is published at [LINK]")]),_v(". It should look something like "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://[YOUR_GITHUB_ID].github.io/publish-RepoSense")]),_v(".\n"),_c('a',{attrs:{"href":"/RepoSense/images/publishingguide-githubsetting.jpg","target":"_self"}},[_c('img',{staticClass:"img-fluid",attrs:{"src":"/RepoSense/images/publishingguide-githubsetting.jpg","alt":"GitHub Setting","title":"GitHub Setting"}})])]),_v(" "),_c('box',{attrs:{"type":"tip","seamless":""}},[_c('p',[_v("There is also a published GitHub Action ("),_c('a',{attrs:{"href":"https://github.com/marketplace/actions/reposense-action"}},[_v("reposense-action")]),_v(") that can be used to generate and publish RepoSense reports. It is especially convenient for users who wish to skip the forking and setting up of a separate repository. For more information, refer to the "),_c('a',{attrs:{"href":"https://github.com/marketplace/actions/reposense-action#usage"}},[_v("usage description")]),_v(".")])])],1)])],1),_v(" "),_c('p'),_v(" "),_c('div',{staticClass:"indented-level0"},[_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('span',[_c('span',{staticClass:"glyphicon glyphicon-log-in",attrs:{"aria-hidden":"true"}})]),_v(" Appendix: "),_c('strong',[_v("Using RepoSense with Travis → Setting up")])])]},proxy:true}])},[_v(" "),_c('div',[_c('div',{staticClass:"lead"},[_c('p',[_v("You can use the CI tool Travis to automate generating and publishing of RepoSense reports.")])]),_v(" "),_c('h2',{attrs:{"id":"setting-up-3"}},[_v("Setting up"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#setting-up-3","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{attrs:{"id":"section-fork-token"}},[_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("The instructions below assume you are using GitHub pages to host your report.")])]),_v(" "),_c('p',[_c('span',{staticClass:"badge bg-dark bigger-level0"},[_v("Step 1")]),_v(" "),_c('strong',[_v("Fork the "),_c('em',[_v("publish-RepoSense")]),_v(" repository")]),_v(" using this "),_c('a',{attrs:{"href":"https://github.com/RepoSense/publish-RepoSense/fork"}},[_v("link")]),_v(". Optionally, you can rename the fork to match your RepoSense report e.g., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("project-code-dashboard")]),_v(".")])],1),_v(" "),_c('p',[_c('span',{staticClass:"badge bg-dark bigger-level0"},[_v("Step 2")]),_v(" "),_c('strong',[_v("Generate a "),_c('em',[_v("personal access token")]),_v(" or "),_c('em',[_v("deploy key")]),_v(" on GitHub")]),_v(" as explained in the panel below.")]),_v(" "),_c('div',{staticClass:"indented-level0"},[_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('span',[_c('span',{staticClass:"glyphicon glyphicon-log-in",attrs:{"aria-hidden":"true"}})]),_v(" Granting write access on GitHub")])]},proxy:true}])},[_v(" "),_c('div',[_c('h2',{attrs:{"id":"granting-write-access-to-a-repository"}},[_v("Granting write-access to a repository"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#granting-write-access-to-a-repository","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("We recommend using a "),_c('a',{attrs:{"href":"https://github.blog/2013-05-16-personal-api-tokens/"}},[_v("personal access token")]),_v(" if aiming for the ease of setup and "),_c('a',{attrs:{"href":"https://developer.github.com/v3/guides/managing-deploy-keys/#deploy-keys"}},[_v("deploy key")]),_v(" if aiming for enhanced security.")]),_v(" "),_c('h3',{attrs:{"id":"if-you-wish-to-use-personal-access-token"}},[_v("If you wish to use "),_c('em',[_v("personal access token")]),_v(":"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#if-you-wish-to-use-personal-access-token","onclick":"event.stopPropagation()"}})]),_v(" "),_c('ol',[_c('li',[_c('strong',[_v("Create a "),_c('em',[_v("personal access token")])]),_v(" by following this "),_c('a',{attrs:{"href":"https://help.github.com/articles/creating-a-personal-access-token-for-the-command-line/"}},[_v("guide")]),_v(" and give only "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("public_repo")]),_v(" permission.")]),_v(" "),_c('li',[_c('strong',[_v("Copy the token")]),_v(" for later use.")])]),_v(" "),_c('h3',{attrs:{"id":"if-you-wish-to-use-deploy-key"}},[_v("If you wish to use "),_c('em',[_v("deploy key")]),_v(":"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#if-you-wish-to-use-deploy-key","onclick":"event.stopPropagation()"}})]),_v(" "),_c('box',{attrs:{"type":"info"},scopedSlots:_u([{key:"icon",fn:function(){return [_c('span',{staticClass:"fab fa-windows",attrs:{"aria-hidden":"true"}})]},proxy:true}])},[_v(" "),_c('p',[_v("[Windows users] "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ssh-keygen")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("base64")]),_v(" are accessible using "),_c('a',{attrs:{"href":"https://gitforwindows.org/"}},[_v("Git Bash")]),_v(".")])]),_v(" "),_c('ol',[_c('li',[_c('strong',[_v("Create a public-private key pair")]),_v(" (without a passphrase) using the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ssh-keygen")]),_v(". "),_c('br'),_v("\ni.e., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ssh-keygen -t ecdsa -b 521 -f id_reposense -q -N \"\"")])]),_v(" "),_c('li',[_c('strong',[_v("Create a deploy key")]),_v(" as follows:\n"),_c('ol',[_c('li',[_v("Go to the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("settings")]),_v(" page of your publish-RepoSense fork")]),_v(" "),_c('li',[_v("Click on the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Deploy keys")]),_v(" item in the navigation menu in that page")]),_v(" "),_c('li',[_v("Click on the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Add deploy key")]),_v(" button and create a new deploy key with the contents of "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("id_reposense.pub")]),_v(".")])])]),_v(" "),_c('li',[_c('strong',[_v("Copy the private key")]),_v(" in base64 encoded format for later use. "),_c('br'),_v("\ni.e., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("cat id_reposense | base64 -w 0")])])])],1)])],1),_v(" "),_c('p'),_v(" "),_c('p',[_c('span',{staticClass:"badge bg-dark bigger-level0"},[_v("Step 3")]),_v(" "),_c('strong',[_v("Login to "),_c('a',{attrs:{"href":"https://travis-ci.org/"}},[_v("Travis-CI")]),_v(".")]),_v(" You may have to sign up first.")]),_v(" "),_c('p',[_c('span',{staticClass:"badge bg-dark bigger-level0"},[_v("Step 4")]),_v(" "),_c('strong',[_v("Sync your Travis account with GitHub:")])]),_v(" "),_c('ol',[_c('li',[_v("Go to "),_c('a',{attrs:{"href":"https://travis-ci.org/account/repositories"}},[_v("your account")]),_v(".")]),_v(" "),_c('li',[_v("Click on "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Sync account")]),_v(" to fetch all your repositories into Travis-CI.")])]),_v(" "),_c('p',[_c('span',{staticClass:"badge bg-dark bigger-level0"},[_v("Step 5")]),_v(" "),_c('strong',[_v("Activate the repository:")])]),_v(" "),_c('ol',[_c('li',[_v("Go to your "),_c('a',{attrs:{"href":"https://travis-ci.org/search/publish-RepoSense/"}},[_v("publish-RepoSense fork in Travis-CI")])]),_v(" "),_c('li',[_v("Under "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Current")]),_v(" tab, click on "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Activate repository")]),_v(".")])]),_v(" "),_c('p',[_c('span',{staticClass:"badge bg-dark bigger-level0"},[_v("Step 6")]),_v(" "),_c('strong',[_v("Set the token/key:")])]),_v(" "),_c('ol',[_c('li',[_v("In the same page, click on "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("More options")]),_v(" on the right.")]),_v(" "),_c('li',[_v("Then, click on the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Settings")]),_v(" option:"),_c('br'),_v(" "),_c('a',{attrs:{"href":"/RepoSense/images/publishingguide-travissetting.jpg","target":"_self"}},[_c('img',{staticClass:"img-fluid",attrs:{"src":"/RepoSense/images/publishingguide-travissetting.jpg","alt":"Travis-CI Dashboard","title":"Travis-CI Dashboard"}})])]),_v(" "),_c('li',[_v("Under "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Environment Variables")]),_v(", name a variable as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("GITHUB_TOKEN")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("GITHUB_DEPLOY_KEY")]),_v(" depending on your earlier choice and paste the token/key into its value field; then click "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Add")]),_v(".")]),_v(" "),_c('li',[_v("Ensure that the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Display value in build log")]),_v(" is "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("switched off")]),_v(" for security reasons:"),_c('br'),_v(" "),_c('a',{attrs:{"href":"/RepoSense/images/publishingguide-githubtoken.jpg","target":"_self"}},[_c('img',{staticClass:"img-fluid",attrs:{"src":"/RepoSense/images/publishingguide-githubtoken.jpg","alt":"Travis-CI Environment Variable","title":"Travis-CI Environment Variable"}})])])]),_v(" "),_c('p',[_c('span',{staticClass:"badge bg-dark bigger-level0"},[_v("Step 7")]),_v(" "),_c('strong',[_v("Update the report configuration:")])]),_v(" "),_c('span',{attrs:{"id":"section-edit-configs"}},[_c('p',[_v("In your fork, edit "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("run.sh")]),_v(" (and if applicable, "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("group-config.csv")]),_v(") to customize the command line parameters or repositories to be analyzed.")]),_v(" "),_c('div',{staticClass:"indented-level0"},[_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('span',[_c('span',{staticClass:"glyphicon glyphicon-log-in",attrs:{"aria-hidden":"true"}})]),_v(" Appendix: "),_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("run.sh")]),_v(" format")])])]},proxy:true}])},[_v(" "),_c('div',[_c('h1',{staticClass:"display-4",attrs:{"id":"appendix-run-sh-format-2"}},[_c('span',[_v("Appendix: run.sh format")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#appendix-run-sh-format-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{staticClass:"lead"},[_c('p',[_c('a',{attrs:{"href":"https://github.com/reposense/publish-RepoSense/blob/master/run.sh"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("run.sh")])]),_v(" is a script used for automating RepoSense report generation.")])]),_v(" "),_c('h3',{attrs:{"id":"customizing-the-reposense-command-2"}},[_v("Customizing the RepoSense command"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#customizing-the-reposense-command-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("You can update the RepoSense command (i.e., the last line) in the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("run.sh")]),_v(" to match your needs.")]),_v(" "),_c('div',{staticClass:"indented-level0"},[_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('span',[_c('span',{staticClass:"glyphicon glyphicon-log-in",attrs:{"aria-hidden":"true"}})]),_v(" Appendix: "),_c('strong',[_v("CLI syntax reference")])])]},proxy:true}])},[_v(" "),_c('div',[_c('h1',{staticClass:"display-4",attrs:{"id":"appendix-cli-syntax-reference-2"}},[_c('span',[_v("Appendix: CLI syntax reference")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#appendix-cli-syntax-reference-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{staticClass:"lead"},[_c('p',[_v("The command "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar")]),_v(" takes several flags.")])]),_v(" "),_c('box',[_c('p',[_c('strong',[_v("Examples")]),_v(":")]),_v(" "),_c('p',[_v("An example of a command using most parameters:"),_c('br'),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar --repos https://github.com/reposense/RepoSense.git --output ./report_folder --since 31/1/2017 --until 31/12/2018 --formats java adoc xml --view --ignore-standalone-config --last-modified-date --timezone UTC+08 --find-previous-authors --analyze-authorship --originality-threshold 0.66")])]),_v(" "),_c('p',[_v("Same command as above but using most parameters in alias format:"),_c('br'),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar -r https://github.com/reposense/RepoSense.git -o ./report_folder -s 31/1/2017 -u 31/12/2018 -f java adoc xml -v -i -l -t UTC+08 -F -A -ot 0.66")])])]),_v(" "),_c('p',[_v("The section below provides explanations for each of the flags.")]),_v(" "),_c('h3',{attrs:{"id":"analyze-authorship-a-2"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--analyze-authorship")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-A")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#analyze-authorship-a-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--analyze-authorship")])]),_v(": Performs further analysis to distinguish between partial and full credit attribution for\nlines of code assigned to the author.")]),_v(" "),_c('ul',[_c('li',[_v("Default: this feature is turned "),_c('em',[_c('strong',[_v("off")])]),_v(" by default and the author will receive partial credits for all lines of\ncode, as the code lines are at least partial credit but may not qualify for full credit.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-A")]),_v(" (upper case)")]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--analyze-authorship")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-A")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("A darker background colour represents full credit, while a lighter background colour represents partial credit.")]),_v(" "),_c('p',[_v("If the code is attributed to a different author by the user via "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("@@author")]),_v(" tag, then the new author will be given\npartial credit.")])]),_v(" "),_c('h3',{attrs:{"id":"assets-a-2"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--assets")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-a")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#assets-a-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{attrs:{"id":"section-assets"}},[_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--assets ASSETS_DIRECTORY")])]),_v(": Specifies where to place assets for report generation.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ASSETS_DIRECTORY")]),_v(" The directory containing the assets files. A "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("favicon.ico")]),_v(" file can be placed here to customize the favicon of the dashboard, while a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("title.md")]),_v(" file can be placed to customize the "),_c('a',{attrs:{"href":"https://reposense.org/ug/customizingReports.html#add-a-title"}},[_v("title")]),_v(" of the report using "),_c('a',{attrs:{"href":"https://www.markdownguide.org/basic-syntax/"}},[_v("Markdown syntax")]),_v(".")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-a")])]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--assets ./assets")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-a ./assets")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("If "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--assets")]),_v(" is not specified, RepoSense looks for assets in the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./assets")]),_v(" directory.")])])])],1),_v(" "),_c('h3',{attrs:{"id":"config-c-2"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--config")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-c")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#config-c-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{attrs:{"id":"section-config"}},[_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--config CONFIG_DIRECTORY")])]),_v(": Specifies that config files located in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("CONFIG_DIRECTORY")]),_v(" should be used to customize the report.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("CONFIG_DIRECTORY")]),_v(" The directory containing the config files. Should contain a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(" file. Optionally, can contain an "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(" file or/and a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("group-config.csv")]),_v(" file or/and a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("report-config.json")]),_v(" file or/and a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("blurbs.md")]),_v(" file.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-c")])]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar --config ./config")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("Cannot be used with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repos")]),_v(". The "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repos")]),_v(" flag will take precedence over this flag.")]),_v(" "),_c('li',[_v("If both "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repos")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--config")]),_v(" are not specified, RepoSense looks for config files in the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./config")]),_v(" directory.")]),_v(" "),_c('li',[_v("Config files must follow "),_c('a',{attrs:{"href":"/RepoSense/ug/configFiles.html"}},[_v("this")]),_v(" format.")])])])],1),_v(" "),_c('h3',{attrs:{"id":"formats-f-2"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--formats")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-f")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#formats-f-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--formats LIST_OF_FORMATS")])]),_v(": Specifies which file extensions to be included in the analysis.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("LIST_OF_FORMATS")]),_v(" A space-separated list of file extensions that should be included in the analysis."),_c('br'),_v("\nDefault: all file formats")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-f")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--formats css fxml gradle")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-f css fxml gradle")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Binary file formats, such as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("jpg")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("png")]),_v(","),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("exe")]),_v(","),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("zip")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("rar")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("docx")]),_v(", and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("pptx")]),_v(", all will be labelled as the file type "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("binary")]),_v(" in the generated report.")])]),_v(" "),_c('h3',{attrs:{"id":"find-previous-authors-f-2"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--find-previous-authors")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-F")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#find-previous-authors-f-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--find-previous-authors")])]),_v(": Utilizes Git blame's ignore revisions functionality, RepoSense will attempt to blame the line changes caused by commits in the ignore commit list to the previous authors who altered those lines (if available).")]),_v(" "),_c('ul',[_c('li',[_v("Default: RepoSense will assume that no authors are responsible for the code changes in the lines altered by commits in the ignore commit list.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-F")]),_v(" (uppercase F)")]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--find-previous-authors")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-F")])])]),_v(" "),_c('h3',{attrs:{"id":"help-h-2"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--help")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-h")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#help-h-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--help")])]),_v(": Shows the help message.")]),_v(" "),_c('ul',[_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-h")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Cannot be used with any other flags. This flag takes precedence over all other flags.")])]),_v(" "),_c('h3',{attrs:{"id":"ignore-standalone-config-i-2"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--ignore-standalone-config")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-i")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#ignore-standalone-config-i-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--ignore-standalone-config")])]),_v(": Specifies that the standalone config file in the repo should be ignored.")]),_v(" "),_c('ul',[_c('li',[_v("Default: the standalone config file is not ignored")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-i")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--ignore-standalone-config")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-i")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("This flag overrides the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Ignore standalone config")]),_v(" field in the CSV config file.")])]),_v(" "),_c('h3',{attrs:{"id":"ignore-filesize-limit-i-2"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--ignore-filesize-limit")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-I")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#ignore-filesize-limit-i-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--ignore-filesize-limit")])]),_v(": Specifies that the file size limit (both default and user-defined) should be ignored during the analysis.")]),_v(" "),_c('ul',[_c('li',[_v("Default: the file size limit is not ignored")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-I")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--ignore-filesize-limit")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-I")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("All files are subject to a default file size limit or a custom size limit set by the user. Most files should not be\naffected by the default size limit. This flag can be useful for including files in your report that are affected by\nthe size limit. Note that this flag may result in large report sizes and/or slower report generation.")])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("This flag overrides the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Ignore file size limit")]),_v(" field in the CSV config file.")])]),_v(" "),_c('h3',{attrs:{"id":"last-modified-date-l-2"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--last-modified-date")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-l")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#last-modified-date-l-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--last-modified-date")])]),_v(": Specifies that the last modified date of each line of code should be added to "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("authorship.json")]),_v(".")]),_v(" "),_c('ul',[_c('li',[_v("Default: the last modified date of each line of code will not be added to "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("authorship.json")])]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-l")]),_v(" (lowercase L)")]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--last-modified-date")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-l")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("Cannot be used with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--shallow-cloning")]),_v(". This may result in an incorrect last modified date.")]),_v(" "),_c('li',[_v("The last modified dates will be in the same timezone specified with the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--timezone")]),_v(" flag.")])])]),_v(" "),_c('h3',{attrs:{"id":"originality-threshold-ot-2"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--originality-threshold")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-ot")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#originality-threshold-ot-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--originality-threshold [VALUE]")])]),_v(": Specifies the cut-off point for partial and full credit\nin "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--analyze-authorship")]),_v(". Author will be given full credit if their contribution exceeds this threshold, else partial\ncredit is given.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("VALUE")]),_v(" Optional. Acceptable range: [0.0, 1.0]."),_c('br'),_v("\nDefault: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("0.51")])]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-ot")])]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--originality-threshold 0.66")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-ot 0.66")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("Requires "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--analyze-authorship")]),_v(" flag.")]),_v(" "),_c('li',[_v("An author's contribution, or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("originality score")]),_v(", is calculated using Levenshtein Distance (Edit Distance) algorithm.\nWe compare the difference between current code line and its previous versions.")])])]),_v(" "),_c('h3',{attrs:{"id":"output-o-2"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--output")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-o")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#output-o-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--output OUTPUT_DIRECTORY")])]),_v(": Indicates where to save the report generated.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("OUTPUT_DIRECTORY")]),_v(" The location for the generated "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("reposense-report")]),_v(" folder."),_c('br'),_v("\nDefault: current directory")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-o")])]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--output ./foo")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-o ./foo")]),_v(" (the report will be in the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./foo/reposense-report")]),_v(" folder)")])]),_v(" "),_c('h3',{attrs:{"id":"period-p-2"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--period")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-p")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#period-p-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--period PERIOD")])]),_v(": Specifies the period of analysis window.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("PERIOD")]),_v(" The period of analysis window, in the format "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("nd")]),_v(" (for n days) or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("nw")]),_v(" (for n weeks). It is used to calculate end date if only start date is specified, or calculate end date if only start date is specified.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-p")])]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--period 30d")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--period 4w")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("If both start date and end date are not specified, the date of generating the report will be taken as the end date.")]),_v(" "),_c('li',[_v("May analyze the incorrect date range if used with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since d1")]),_v(". The program will throw a warning.")]),_v(" "),_c('li',[_v("Cannot be used with both "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--until")]),_v(". The program will throw an exception.")])])]),_v(" "),_c('h3',{attrs:{"id":"repo-repos-r-2"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repo")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repos")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-r")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#repo-repos-r-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repo REPO_LOCATION")])]),_v(": Specifies which repositories to analyze.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("REPO_LOCATION")]),_v(" A list of URLs or the disk location of the git repositories to analyze, separated by spaces.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-r")])]),_v(" "),_c('li',[_v("Examples:\n"),_c('ul',[_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repos https://github.com/reposense/RepoSense.git")])]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repo https://github.com/reposense/RepoSense.git c:/myRepose/foo/bar")]),_v(": analyzes the two specified repos (one remote, one local) and generates one report containing details of both.")])])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Cannot be used with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--config")]),_v(". This flag takes precedence over "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--config")]),_v(".")])]),_v(" "),_c('h3',{attrs:{"id":"shallow-cloning-s-2"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--shallow-cloning")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-S")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#shallow-cloning-s-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--shallow-cloning")])]),_v(": Clones repositories using Git's shallow cloning functionality, which can significantly reduce the time taken to clone large repositories. However, the flag should not be used for smaller repositories where the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(".git")]),_v(" file is smaller than 500 MB, as it would create overhead.")]),_v(" "),_c('ul',[_c('li',[_v("Default: RepoSense does not clone repositories using Git's shallow cloning functionality.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-S")]),_v(" (uppercase S)")]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--shallow-cloning")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-S")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Cannot be used with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--last-modified-date")]),_v(". This may result in an incorrect last modified date.")])]),_v(" "),_c('h3',{attrs:{"id":"since-s-2"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-s")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#since-s-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since START_DATE")])]),_v(": Specifies the start date for the period to be analyzed.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("START_DATE")]),_v(" The first day of the period to be analyzed, in the format "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("DD/MM/YYYY")]),_v("."),_c('br'),_v("\nDefault: one month before the current date")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-s")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since 21/10/2017")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-s 21/10/2017")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("If the start date is not specified, only commits made one month before the end date (if specified) or the date of generating the report, will be captured and analyzed.")]),_v(" "),_c('li',[_v("If "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("d1")]),_v(" is specified as the start date ("),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since d1")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-s d1")]),_v("), then the program will search for the earliest commit date of all repositories and use that as the start date.")]),_v(" "),_c('li',[_v("If "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("d1")]),_v(" is specified together with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--period")]),_v(", then the program will warn that the date range being analyzed may be incorrect.")])])]),_v(" "),_c('h3',{attrs:{"id":"timezone-t-2"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--timezone")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-t")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#timezone-t-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--timezone ZONE_ID")])]),_v(": Indicates the timezone to be used for the analysis.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ZONE_ID")]),_v(" The timezone in the format "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ZONE_ID[±hh[mm]]")]),_v("."),_c('br'),_v("\nDefault: system's default timezone")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-t")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--timezone UTC+08")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-t UTC-1030")])])]),_v(" "),_c('h3',{attrs:{"id":"until-u-2"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--until")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-u")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#until-u-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--until END_DATE")])]),_v(": Specifies the end date of the analysis period.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("END_DATE")]),_v(" The last date of the period to be analyzed, in the format "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("DD/MM/YYYY")]),_v("."),_c('br'),_v("\nDefault: current date")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-u")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--until 21/10/2017")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-u 21/10/2017")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Note: If the end date is not specified, the date of generating the report will be taken as the end date.")])]),_v(" "),_c('h3',{attrs:{"id":"version-v-2"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--version")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-V")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#version-v-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--version")])]),_v(": Shows the version of RepoSense.")]),_v(" "),_c('ul',[_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-V")]),_v(" (upper case)")])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Cannot be used with any other flags. This flag takes precedence over all other flags other than "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--help")]),_v(".")])]),_v(" "),_c('h3',{attrs:{"id":"view-v-2"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--view")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-v")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#view-v-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--view [REPORT_FOLDER]")])]),_v(": Specifies that the report should be opened in the default browser.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("REPORT_FOLDER")]),_v(" Optional. If specified, no analysis will be performed and the report specified by the argument will be opened."),_c('br'),_v("\nDefault: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./reposense-report")])]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-v")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--view")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-v")])])])],1)])],1),_v(" "),_c('p'),_v(" "),_c('h3',{attrs:{"id":"specifying-which-version-of-reposense-to-use-2"}},[_v("Specifying which version of RepoSense to use"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#specifying-which-version-of-reposense-to-use-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Depending on which version you wish to use for report generation, add one of the following flags to the line "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./get-reposense.py")]),_v(" in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("run.sh")]),_v(" (e.g., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./get-reposense.py --release")]),_v("):")]),_v(" "),_c('ul',[_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--release")]),_v(": Use the latest release (Stable)")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--master")]),_v(": Use the latest version of the master branch")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--tag TAG")]),_v(" (e.g. "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--tag v1.6.1")]),_v("): Use the version identified by the Git tag given")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--commit COMMIT")]),_v(" (e.g. "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--commit abc123")]),_v("): Use the version identified by the Git commit SHA given")])])])])],1),_v(" "),_c('p'),_v(" "),_c('div',{staticClass:"indented-level0"},[_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('span',[_c('span',{staticClass:"glyphicon glyphicon-log-in",attrs:{"aria-hidden":"true"}})]),_v(" Appendix: "),_c('strong',[_v("Config files format")])])]},proxy:true}])},[_v(" "),_c('div',[_c('h1',{staticClass:"display-4",attrs:{"id":"appendix-config-files-format-2"}},[_c('span',[_v("Appendix: Config files format")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#appendix-config-files-format-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{staticClass:"lead"},[_c('p',[_v("Given below are the details of the various config files used by RepoSense.")])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_c('strong',[_v("RepoSense ignores the order of column headers in the CSV config files. However, the spelling of the column headers must match the specified headers exactly, or the column would be ignored by RepoSense.")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_c('strong',[_v("A value in a config file is optional to provide unless it is specified as "),_c('span',{staticClass:"badge bg-danger"},[_v("mandatory")])]),_v(".")])]),_v(" "),_c('h2',{attrs:{"id":"repo-config-csv-2"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#repo-config-csv-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(" file contains repo-level config data.")]),_v(" Each row represents a repository's configuration ("),_c('a',{attrs:{"href":"/RepoSense/ug/repo-config.csv"}},[_v("example")]),_v(").")]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Column Name")]),_v(" "),_c('th',[_v("Explanation")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_v("Repository's Location "),_c('span',{staticClass:"badge bg-danger"},[_v("mandatory")])]),_v(" "),_c('td',[_v("The "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Remote Repo URL")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Disk Path")]),_v(" to the git repository e.g., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://github.com/foo/bar.git")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("C:\\Users\\user\\Desktop\\GitHub\\foo\\bar")])])]),_v(" "),_c('tr',[_c('td',[_v("Branch")]),_v(" "),_c('td',[_v("The branch to analyze in the target repository e.g., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("master")]),_v(". Default: the default branch of the repo")])]),_v(" "),_c('tr',[_c('td',[_v("File formats"),_c('sup',[_v("*+")])]),_v(" "),_c('td',[_v("The file extensions to analyze. Binary file formats, such as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("png")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("jpg")]),_v(", will be automatically labelled as the file type "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("binary")]),_v(" in the generated report. Default: all file formats")])]),_v(" "),_c('tr',[_c('td',[_v("Find Previous Authors")]),_v(" "),_c('td',[_v("Enter "),_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("yes")])]),_v(" to utilize Git blame's ignore revisions functionality, RepoSense will attempt to blame the line changes caused by commits in the ignore commit list to the previous authors who altered those lines (if available).")])]),_v(" "),_c('tr',[_c('td',[_v("Ignore Glob List"),_c('sup',[_v("*+")])]),_v(" "),_c('td',[_v("The list of file path globs to ignore during analysis for each author e.g., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("test/**;temp/**")]),_v(". Refer to the "),_c('a',{attrs:{"href":"https://docs.oracle.com/javase/tutorial/essential/io/fileOps.html#glob"}},[_c('em',[_v("glob format")])]),_v(" for the path glob syntax.")])]),_v(" "),_c('tr',[_c('td',[_v("Ignore standalone config")]),_v(" "),_c('td',[_v("To ignore the standalone config file (if any) in target repository, enter "),_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("yes")])]),_v(". If the cell is empty, the standalone config file in the repo (if any) will take precedence over configurations provided in the csv files.")])]),_v(" "),_c('tr',[_c('td',[_v("Ignore Commits List"),_c('sup',[_v("*+")])]),_v(" "),_c('td',[_v("The list of commits to ignore during analysis. For accurate results, the commits should be provided with their full hash. Additionally, a range of commits can be specified using the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("..")]),_v(" notation e.g. "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("abc123..def456")]),_v(" (both inclusive).")])]),_v(" "),_c('tr',[_c('td',[_v("Ignore Authors List"),_c('sup',[_v("*+")])]),_v(" "),_c('td',[_v("The list of authors to ignore during analysis. Authors should be specified by their "),_c('a',{attrs:{"href":"#a-note-about-git-author-name"}},[_v("Git Author Name")]),_v(".")])]),_v(" "),_c('tr',[_c('td',[_v("Shallow Cloning")]),_v(" "),_c('td',[_v("Enter "),_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("yes")])]),_v(" to clone the repository using Git's shallow cloning functionality. This option can significantly reduce the time taken to clone large repositories. However, the option should ideally be disabled for smaller repositories where the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(".git")]),_v(" file is smaller than 500 MB, as it would create overhead.")])]),_v(" "),_c('tr',[_c('td',[_v("File Size Limit"),_c('sup',[_v("+")])]),_v(" "),_c('td',[_v("Enter a file size limit for the repository in bytes as a single number without units (for a size limit of 1MB for example, enter 1000000). This file size limit will override the default file size limit (500KB). Files exceeding the file size limit will be marked as ignored and only the file name and line count will be reflected in the report.")])]),_v(" "),_c('tr',[_c('td',[_v("Ignore File Size Limit")]),_v(" "),_c('td',[_v("Enter "),_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("yes")])]),_v(" to ignore both the default file size limit and the file size limit possibly set by the user in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(".")])]),_v(" "),_c('tr',[_c('td',[_v("Skip Ignored File Analysis")]),_v(" "),_c('td',[_v("Enter "),_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("yes")])]),_v(" to ignore analysis of files exceeding the file size limit entirely. If file analysis is skipped, all information about the file will be omitted from the generated report. This option can significantly improve report generation time.")])])])])]),_c('box',{attrs:{"type":"info","seamless":""}},[_v("\nThe Shallow Cloning option is incompatible with the \"--last-modified-date\" CLI flag.\n")]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_v("\nIf Ignore File Size Limit is yes, the File Size Limit and Skip Ignored File Analysis columns are ignored.\n")]),_v(" "),_c('p',[_c('sup',[_v("* "),_c('strong',[_v("Multi-value column")]),_v(": multiple values can be entered in this column using a semicolon "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(";")]),_v(" as the separator.")]),_c('br'),_v(" "),_c('sup',[_v("+ "),_c('strong',[_v("Overrideable column")]),_v(": prepend with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("override:")]),_v(" to use entered value(s) instead of value(s) from standalone config.")])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("When using "),_c('a',{attrs:{"href":"#config-json-standalone-config-file"}},[_v("standalone config")]),_v(" (if it is not ignored), it is possible to override specific values from the standalone config by prepending the entered value with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("override:")]),_v(".")])]),_v(" "),_c('h2',{attrs:{"id":"author-config-csv-2"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#author-config-csv-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Optionally, you can use an "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(" (which should be in the same directory as the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(" file) to provide more details about the authors to analyze ("),_c('a',{attrs:{"href":"/RepoSense/ug/author-config.csv"}},[_v("example")]),_v("). It should contain the following columns:")]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Column Name")]),_v(" "),_c('th',[_v("Explanation")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_v("Repository's Location"),_c('sup',[_v("*")])]),_v(" "),_c('td',[_v("Same as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(". Default: all the repos in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(".")])]),_v(" "),_c('tr',[_c('td',[_v("Branch")]),_v(" "),_c('td',[_v("The branch to analyze for this author, e.g., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("master")]),_v(". Default: the author will be bound to all the repos in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(" that has the same repo's location, regardless of branch.")])]),_v(" "),_c('tr',[_c('td',[_v("Author's Git Host ID"),_c('sup',[_v("#")]),_v(" "),_c('span',{staticClass:"badge bg-danger"},[_v("mandatory")])]),_v(" "),_c('td',[_v("Username of the target author's profile on GitHub, GitLab or Bitbucket, e.g."),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("JohnDoe")]),_v(".")])]),_v(" "),_c('tr',[_c('td',[_v("Author's Emails"),_c('sup',[_v("*")])]),_v(" "),_c('td',[_v("Associated emails of the author. For GitHub users, this can be found in your "),_c('a',{attrs:{"href":"https://github.com/settings/emails"}},[_v("GitHub settings")]),_v(".")])]),_v(" "),_c('tr',[_c('td',[_v("Author's Display Name")]),_v(" "),_c('td',[_v("The name to display for the author. Default: author's username.")])]),_v(" "),_c('tr',[_c('td',[_v("Author's Git Author Name"),_c('sup',[_v("*")])]),_v(" "),_c('td',[_v("The meaning of "),_c('em',[_v("Git Author Name")]),_v(" is explained in "),_c('a',{attrs:{"href":"#a-note-about-git-author-name"}},[_c('em',[_v("A note about git author name")])]),_v(".")])]),_v(" "),_c('tr',[_c('td',[_v("Ignore Glob List"),_c('sup',[_v("*")])]),_v(" "),_c('td',[_v("Files to ignore for this author, in addition to files ignored by the patterns specified in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(". The path glob syntax is the same as that of Ignore Glob List in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(".")])])])])]),_c('p',[_c('sup',[_v("* "),_c('strong',[_v("Multi-value column")]),_v(": multiple values can be entered in this column using a semicolon "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(";")]),_v(" as the separator.")]),_v(" "),_c('br'),_v(" "),_c('sup',[_v("# For backward compatibility, "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Author's GitHub ID")]),_v(" is still accepted as the header in place of "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Author's Git Host ID")]),_v(".")])]),_v(" "),_c('p',[_v("If "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(" is not given and the repo has not provided author details in a standalone config file, all the authors of the repositories within the date range specified (if any) will be analyzed.")]),_v(" "),_c('p',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(" has some advanced syntax that can help to reduce duplication of the author's information. The syntax guide is given below:")]),_v(" "),_c('div',{staticClass:"indented-level0"},[_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('span',[_c('span',{staticClass:"glyphicon glyphicon-log-in",attrs:{"aria-hidden":"true"}})]),_v(" Appendix: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(" advanced syntax")])]},proxy:true}])},[_v(" "),_c('div',[_c('h1',{staticClass:"display-4",attrs:{"id":"appendix-author-config-csv-advanced-syntax-2"}},[_c('span',[_v("Appendix: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(" advanced syntax")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#appendix-author-config-csv-advanced-syntax-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{staticClass:"lead"},[_c('p',[_v("Given below are the advanced syntax available for "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(".")])]),_v(" "),_c('h2',{attrs:{"id":"multiple-repository-s-location-per-author-2"}},[_v("Multiple "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repository's Location")]),_v(" per author"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#multiple-repository-s-location-per-author-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('h4',{attrs:{"id":"specifying-multiple-repository-s-location-2"}},[_v("Specifying multiple "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repository's Location")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#specifying-multiple-repository-s-location-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("To specify multiple "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repository's Location")]),_v(" in a single row, we can use a semicolon "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(";")]),_v(" as a separator.")]),_v(" "),_c('p',[_v("Below is an example:")]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Repository's Location")]),_v(" "),_c('th',[_v("Branch")]),_v(" "),_c('th',[_v("Author's Git Host ID")]),_v(" "),_c('th',[_v("... Hidden columns")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://github.com/reposense/RepoSense.git;https://github.com/MarkBind/markbind.git")])]),_v(" "),_c('td',[_v("master")]),_v(" "),_c('td',[_v("sikai00")]),_v(" "),_c('td',[_v("--")])])])])]),_c('p',[_v("We have now furnished author details for both repositories in a single row, instead of having two individual rows per "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repository's Location")]),_v(".")]),_v(" "),_c('br'),_v(" "),_c('h4',{attrs:{"id":"specifying-repository-s-location-with-one-or-more-specific-branches-2"}},[_v("Specifying "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repository's Location")]),_v(" with one or more specific branches"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#specifying-repository-s-location-with-one-or-more-specific-branches-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("To list out one or more branches for a particular "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repository's Location")]),_v(", we can use a pipe "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("|")]),_v(" separator to demarcate the different branches.")]),_v(" "),_c('p',[_v("Below is an example:")]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Repository's Location")]),_v(" "),_c('th',[_v("Branch")]),_v(" "),_c('th',[_v("Author's Git Host ID")]),_v(" "),_c('th',[_v("... Hidden columns")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://github.com/reposense/RepoSense.git~master|release|cypress")])]),_v(" "),_c('td',[_v("master")]),_v(" "),_c('td',[_v("sikai00")]),_v(" "),_c('td',[_v("--")])])])])]),_c('p',[_v("We have now provided author details for three different branches in a single repo, using a single row.")]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("The branch specified through the delimiter syntax will take precedence over the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Branch")]),_v(" column.")])]),_v(" "),_c('h2',{attrs:{"id":"using-github-branch-url-as-repository-s-location-2"}},[_v("Using GitHub branch URL as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repository's Location")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#using-github-branch-url-as-repository-s-location-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("We can also use GitHub branch URL as copied from the address bar directly, to be able to quickly use the URL to specify the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repository's Location")]),_v(" and a specific "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Branch")]),_v(" at the same time.")]),_v(" "),_c('p',[_v("Below is an example:")]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Repository's Location")]),_v(" "),_c('th',[_v("Branch")]),_v(" "),_c('th',[_v("Author's Git Host ID")]),_v(" "),_c('th',[_v("... Hidden columns")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://github.com/reposense/RepoSense/tree/release")])]),_v(" "),_c('td'),_v(" "),_c('td',[_v("sikai00")]),_v(" "),_c('td',[_v("--")])])])])]),_c('p',[_v("There is no need to specify the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Branch")]),_v(" column now, as we have specified it through the GitHub branch URL.")]),_v(" "),_c('box',{attrs:{"type":"warning","seamless":""}},[_c('p',[_v("GitLab and BitBucket branch URL are not supported at the moment.")])]),_v(" "),_c('h2',{attrs:{"id":"combining-the-advanced-syntax-2"}},[_v("Combining the advanced syntax"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#combining-the-advanced-syntax-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("It is possible to combine the above-mentioned advanced syntax. By doing so, we can go from:")]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Repository's Location")]),_v(" "),_c('th',[_v("Branch")]),_v(" "),_c('th',[_v("Author's Git Host ID")]),_v(" "),_c('th',[_v("... Hidden columns")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://github.com/MarkBind/markbind/tree/vue3-migration")])]),_v(" "),_c('td'),_v(" "),_c('td',[_v("sikai00")]),_v(" "),_c('td',[_v("--")])]),_v(" "),_c('tr',[_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://github.com/reposense/RepoSense.git")])]),_v(" "),_c('td',[_v("master")]),_v(" "),_c('td',[_v("sikai00")]),_v(" "),_c('td',[_v("--")])]),_v(" "),_c('tr',[_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://github.com/reposense/RepoSense.git")])]),_v(" "),_c('td',[_v("cypress")]),_v(" "),_c('td',[_v("sikai00")]),_v(" "),_c('td',[_v("--")])])])])]),_c('p',[_v("to:")]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Repository's Location")]),_v(" "),_c('th',[_v("Branch")]),_v(" "),_c('th',[_v("Author's Git Host ID")]),_v(" "),_c('th',[_v("... Hidden columns")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://github.com/MarkBind/markbind/tree/vue3-migration;https://github.com/reposense/RepoSense.git~master|cypress")])]),_v(" "),_c('td'),_v(" "),_c('td',[_v("sikai00")]),_v(" "),_c('td',[_v("--")])])])])]),_c('br')],1)])],1),_v(" "),_c('p'),_v(" "),_c('h2',{attrs:{"id":"group-config-csv-2"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("group-config.csv")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#group-config-csv-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Optionally, you can provide a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("group-config.csv")]),_v("(which should be in the same directory as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(" file) to provide details on any custom groupings for files in specified repositories ("),_c('a',{attrs:{"href":"/RepoSense/ug/group-config.csv"}},[_v("example")]),_v("). It should contain the following columns:")]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Column Name")]),_v(" "),_c('th',[_v("Explanation")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_v("Repository's Location")]),_v(" "),_c('td',[_v("Same as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(". Default: all the repos in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")])])]),_v(" "),_c('tr',[_c('td',[_v("Group Name "),_c('span',{staticClass:"badge bg-danger"},[_v("mandatory")])]),_v(" "),_c('td',[_v("Name of the group, e.g.,"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("test")]),_v(".")])]),_v(" "),_c('tr',[_c('td',[_v("Globs * "),_c('span',{staticClass:"badge bg-danger"},[_v("mandatory")])]),_v(" "),_c('td',[_v("The list of file path globs to include for specified group, e.g.,"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("**/test/*;**.java")]),_v(".")])])])])]),_c('p',[_c('sup',[_v("* "),_c('strong',[_v("Multi-value column")]),_v(": multiple values can be entered in this column using a semicolon "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(";")]),_v(" as the separator.")])]),_v(" "),_c('p',[_v("Note that a file in a given repository should only be tagged to one group. "),_c('br'),_v("\ne.g.: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("example.java")]),_v(" in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("example-repo")]),_v(" can either be in the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("test")]),_v(" group or the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("code")]),_v(" group, but not in both "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("test")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("code")]),_v(" group. If multiple groups are specified for a given file, the latter group (i.e., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("code")]),_v(" group) is set for the file.")]),_v(" "),_c('h2',{attrs:{"id":"report-config-json-2"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("report-config.json")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#report-config-json-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("You can optionally use "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("report-config.json")]),_v(" to customize report generation by providing the following information. ("),_c('a',{attrs:{"href":"/RepoSense/ug/report-config.json"}},[_v("example")]),_v(")")]),_v(" "),_c('p',[_c('strong',[_v("Fields to provide")]),_v(":")]),_v(" "),_c('ul',[_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("title")]),_v(": Title of the generated report, which is also the title of the deployed dashboard. Default: \"RepoSense Report\"")])]),_v(" "),_c('div',{attrs:{"id":"section-standalone"}},[_c('h2',{attrs:{"id":"config-json-standalone-config-file-2"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("config.json")]),_v(" (standalone config file)"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#config-json-standalone-config-file-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Repo owners can provide the following additional information to RepoSense using a config file that we call the "),_c('strong',[_c('em',[_v("standalone config file")])]),_v(":")]),_v(" "),_c('ul',[_c('li',[_v("which files/authors/commits to analyze/omit")]),_v(" "),_c('li',[_v("which git and git host usernames belong to which authors")]),_v(" "),_c('li',[_v("the display of an author")])]),_v(" "),_c('p',[_v("To use this feature, add a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("_reposense/config.json")]),_v(" to the root of your repo using the format in the example below ("),_c('a',{attrs:{"href":"https://github.com/reposense/RepoSense/blob/master/_reposense/config.json"}},[_v("another example")]),_v(") and "),_c('strong',[_v("commit it")]),_v(" (reason: RepoSense can see committed code only):")]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"no-line-numbers hljs json"}},[_c('span',[_v("{\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"ignoreGlobList\"")]),_v(": ["),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"about-us/**\"")]),_v(", "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"**index.html\"")]),_v("],\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"formats\"")]),_v(": ["),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"html\"")]),_v(", "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"css\"")]),_v("],\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"ignoreCommitList\"")]),_v(": ["),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"90018e49f129ce7e0abdc8b18e91c9813588c601\"")]),_v(", "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"67890def\"")]),_v(", "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"abc123..def456\"")]),_v("],\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"ignoreAuthorList\"")]),_v(": ["),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"charlie\"")]),_v("],\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"authors\"")]),_v(":\n")]),_c('span',[_v(" [\n")]),_c('span',[_v(" {\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"gitId\"")]),_v(": "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"alice\"")]),_v(",\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"emails\"")]),_v(": ["),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"alice@example.com\"")]),_v(", "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"alicet@example.com\"")]),_v("],\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"displayName\"")]),_v(": "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"Alice T.\"")]),_v(",\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"authorNames\"")]),_v(": ["),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"AT\"")]),_v(", "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"A\"")]),_v("],\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"ignoreGlobList\"")]),_v(": ["),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"**.css\"")]),_v("]\n")]),_c('span',[_v(" },\n")]),_c('span',[_v(" {\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"gitId\"")]),_v(": "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"bob\"")]),_v("\n")]),_c('span',[_v(" }\n")]),_c('span',[_v(" ]\n")]),_c('span',[_v("}\n")])])]),_c('p',[_v("Note: all fields are optional unless specified otherwise.")]),_v(" "),_c('p',[_c('strong',[_v("Fields to provide "),_c('em',[_v("repository-level")]),_v(" info")]),_v(":")]),_v(" "),_c('ul',[_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ignoreGlobList")]),_v(": Folders/files to ignore, specified using the "),_c('a',{attrs:{"href":"https://docs.oracle.com/javase/tutorial/essential/io/fileOps.html#glob"}},[_c('em',[_v("glob format")])]),_v(".")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("formats")]),_v(": File formats to analyze. Binary file formats, such as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("png")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("jpg")]),_v(", will be automatically labelled as the file type "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("binary")]),_v(" in the generated report. Default: all file formats")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ignoreCommitList")]),_v(": The list of commits to ignore during analysis. For accurate results, the commits should be provided with their full hash. Additionally, a range of commits can be specified using the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("..")]),_v(" notation e.g. "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("abc123..def456")]),_v(" (both inclusive).")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ignoreAuthorList")]),_v(": The list of authors to ignore during analysis. Authors specified in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("authors")]),_v(" field or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(" will be also be omitted if they are in this list. Authors should be specified by their "),_c('a',{attrs:{"href":"#a-note-about-git-author-name"}},[_v("Git Author Name")]),_v(".")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("fileSizeLimit")]),_v(": A file size limit for the repository in bytes as a single number without units, that will override the default file size limit. If not specified, the default file size limit will continue to be used.")])]),_v(" "),_c('p',[_c('strong',[_v("Fields to provide "),_c('em',[_v("author-level")]),_v(" info")]),_v(":"),_c('br'),_v("\nNote: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("authors")]),_v(" field should contain "),_c('em',[_v("all")]),_v(" authors that should be captured in the analysis.")]),_v(" "),_c('ul',[_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("gitId")]),_v(": Username of the author. "),_c('span',{staticClass:"badge bg-danger"},[_v("mandatory")]),_v(" field.")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("emails")]),_v(": Associated git emails of the author. For GitHub, this can be found in your "),_c('a',{attrs:{"href":"https://github.com/settings/emails"}},[_v("GitHub settings")]),_v(".")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("displayName")]),_v(": Name to display on the report for this author.")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("authorNames")]),_v(": Git Author Name(s) used in the author's commits. By default, RepoSense assumes an author would use their remote Git Host username as the Git username too. The meaning of "),_c('em',[_v("Git Author Name")]),_v(" is explained in "),_c('a',{attrs:{"href":"#a-note-about-git-author-name"}},[_c('em',[_v("A note about git author name")])]),_v(".")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ignoreGlobList")]),_v(": "),_c('em',[_v("Additional")]),_v(" (i.e. on top of the repo-level "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ignoreGlobList")]),_v(") folders/files to ignore for a specific author. The path glob syntax is specified by the "),_c('a',{attrs:{"href":"https://docs.oracle.com/javase/tutorial/essential/io/fileOps.html#glob"}},[_c('em',[_v("glob format")])]),_v(". In the example above, the actual "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ignoreGlobList")]),_v(" for "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("alice")]),_v(" would be "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("[\"about-us/**\", \"**index.html\", \"**.css\"]")]),_v(".")])]),_v(" "),_c('p',[_v("To verify your standalone configuration is as intended, add the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("_reposense/config.json")]),_v(" to your local copy of repo and run RepoSense against it as follows:"),_c('br')]),_v(" "),_c('ul',[_c('li',[_v("Format: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar --repo LOCAL_REPO_LOCATION")]),_v(" "),_c('br')]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar --repo c:/myRepose/foo/bar")]),_c('br'),_v("\nAfter that, view the report to see if the configuration you specified in the config file is being reflected correctly in the report.")])]),_v(" "),_c('h2',{attrs:{"id":"a-note-about-git-author-name-2"}},[_v("A note about git author name"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#a-note-about-git-author-name-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Git Author Name")]),_v(" refers to the customizable author's display name set in the local "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(".gitconfig")]),_v(" file. For example, in the Git Log's display:")]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"no-line-numbers hljs"}},[_c('span',[_v("...\n")]),_c('span',[_v("commit cd7f610e0becbdf331d5231887d8010a689f87c7\n")]),_c('span',[_v("Author: ConfiguredAuthorName \n")]),_c('span',[_v("Date: Fri Feb 9 19:14:41 2018 +0800\n")]),_c('span',[_v("\n")]),_c('span',[_v(" Make some changes to show my new author's name\n")]),_c('span',[_v("\n")]),_c('span',[_v("commit e3f699fd4ef128eebce98d5b4e5b3bb06a512f49\n")]),_c('span',[_v("Author: ActualGitHostId \n")]),_c('span',[_v("Date: Fri Feb 9 19:13:13 2018 +0800\n")]),_c('span',[_v("\n")]),_c('span',[_v(" Initial commit\n")]),_c('span',[_v(" ...\n")])])]),_c('p',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ActualGitHostId")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ConfiguredAuthorName")]),_v(" are both "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Git Author Name")]),_v(" of the same author."),_c('br'),_v("\nTo find the author name that you are currently using for your current git repository, run the following command within your git repository:")]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"no-line-numbers hljs"}},[_c('span',[_v("git config user.name\n")])])]),_c('p',[_v("To set the author name to the value you want (e.g., to set it to your GitHub username) for your current git repository, you can use the following command ("),_c('a',{attrs:{"href":"https://www.git-tower.com/learn/git/faq/change-author-name-email"}},[_v("more info")]),_v("):")]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"no-line-numbers hljs"}},[_c('span',[_v("git config user.name \"YOUR_AUTHOR_NAME”\n")])])]),_c('p',[_v("To set the author name to use a default value you want for future git repositories, you can use the following command:")]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"no-line-numbers hljs"}},[_c('span',[_v("git config --global user.name \"YOUR_AUTHOR_NAME”\n")])])]),_c('p',[_v("RepoSense expects the Git Author Name to be the same as author's username on the Git hosting platform (GitHub, GitLab, BitBucket). If an author's "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Git Author Name")]),_v(" is different from their username on the Git hosting platform, the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Git Author Name")]),_v(" needs to be specified in the standalone config file. If the author has more than one "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Git Author Name")]),_v(", multiple values can be entered too.")]),_v(" "),_c('box',{attrs:{"type":"warning","seamless":""}},[_c('p',[_v("Note: Symbols such as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("\"")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("!")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("/")]),_v(" etc. in your author name will be omitted, which may reduce the accuracy of the analysis if 2 names in the repository are approximately similar.")])])],1),_v(" "),_c('div',{attrs:{"id":"section-blurbs"}},[_c('h2',{attrs:{"id":"blurbs-md-2"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("blurbs.md")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#blurbs-md-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("You can optionally use "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("blurbs.md")]),_v(" to add blurbs in Markdown syntax for repository branches. These blurbs will be seen when grouping by "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repo/Branch")]),_v(". ("),_c('a',{attrs:{"href":"https://github.com/reposense/RepoSense/blob/master/docs/ug/blurbs.md"}},[_v("example")]),_v(")")]),_v(" "),_c('p',[_c('strong',[_v("Format")]),_v(":")]),_v(" "),_c('ul',[_c('li',[_v("First line in section: Link to the repository branch.")]),_v(" "),_c('li',[_v("Second line onwards: Blurb content.")]),_v(" "),_c('li',[_v("Delimiter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("")]),_v(". Everything on the line after the delimiter will be ignored.")])])])],1)])],1),_v(" "),_c('p')]),_v(" "),_c('p',[_c('span',{staticClass:"badge bg-dark bigger-level0"},[_v("Step 8")]),_v(" "),_c('strong',[_v("View the generated report:")])]),_v(" "),_c('ol',[_c('li',[_v("Go to the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Settings")]),_v(" page of your fork in GitHub.")]),_v(" "),_c('li',[_v("Under the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("GitHub Pages")]),_v(" section, look for "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Your site is published at [LINK]")]),_v(". It should look something like "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://[YOUR_GITHUB_ID].github.io/publish-RepoSense")]),_v(".\n"),_c('a',{attrs:{"href":"/RepoSense/images/publishingguide-githubsetting.jpg","target":"_self"}},[_c('img',{staticClass:"img-fluid",attrs:{"src":"/RepoSense/images/publishingguide-githubsetting.jpg","alt":"GitHub Setting","title":"GitHub Setting"}})])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("It takes a few minutes for report generation. Meanwhile, you can monitor the progress live at "),_c('a',{attrs:{"href":"https://travis-ci.org/dashboard/builds"}},[_v("Travis-CI's Builds")]),_v(".")])])],1)])],1),_v(" "),_c('p')],1)])],1),_v(" "),_c('p'),_v(" "),_c('p',[_v("As you generate reports, you may need to learn how to customize those reports further.")]),_v(" "),_c('div',{staticClass:"indented-level0"},[_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('span',[_c('span',{staticClass:"glyphicon glyphicon-log-in",attrs:{"aria-hidden":"true"}})]),_v(" "),_c('strong',[_v("Customizing reports")])])]},proxy:true}])},[_v(" "),_c('div',[_c('h1',{staticClass:"display-4",attrs:{"id":"customizing-reports"}},[_c('span',[_v("Customizing reports")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#customizing-reports","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{staticClass:"lead"},[_c('p',[_v("The report can be customized using several ways, as explained below.")])]),_v(" "),_c('h3',{attrs:{"id":"customize-using-cli-flags"}},[_v("Customize using CLI flags"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#customize-using-cli-flags","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_v("The simplest approach is to provide additional flags when running RepoSense.")]),_v(" The various flags are given in the panel below.")]),_v(" "),_c('div',{staticClass:"indented-level0"},[_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('span',[_c('span',{staticClass:"glyphicon glyphicon-log-in",attrs:{"aria-hidden":"true"}})]),_v(" Appendix: "),_c('strong',[_v("CLI syntax reference")])])]},proxy:true}])},[_v(" "),_c('div',[_c('h1',{staticClass:"display-4",attrs:{"id":"appendix-cli-syntax-reference-3"}},[_c('span',[_v("Appendix: CLI syntax reference")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#appendix-cli-syntax-reference-3","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{staticClass:"lead"},[_c('p',[_v("The command "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar")]),_v(" takes several flags.")])]),_v(" "),_c('box',[_c('p',[_c('strong',[_v("Examples")]),_v(":")]),_v(" "),_c('p',[_v("An example of a command using most parameters:"),_c('br'),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar --repos https://github.com/reposense/RepoSense.git --output ./report_folder --since 31/1/2017 --until 31/12/2018 --formats java adoc xml --view --ignore-standalone-config --last-modified-date --timezone UTC+08 --find-previous-authors --analyze-authorship --originality-threshold 0.66")])]),_v(" "),_c('p',[_v("Same command as above but using most parameters in alias format:"),_c('br'),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar -r https://github.com/reposense/RepoSense.git -o ./report_folder -s 31/1/2017 -u 31/12/2018 -f java adoc xml -v -i -l -t UTC+08 -F -A -ot 0.66")])])]),_v(" "),_c('p',[_v("The section below provides explanations for each of the flags.")]),_v(" "),_c('h3',{attrs:{"id":"analyze-authorship-a-3"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--analyze-authorship")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-A")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#analyze-authorship-a-3","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--analyze-authorship")])]),_v(": Performs further analysis to distinguish between partial and full credit attribution for\nlines of code assigned to the author.")]),_v(" "),_c('ul',[_c('li',[_v("Default: this feature is turned "),_c('em',[_c('strong',[_v("off")])]),_v(" by default and the author will receive partial credits for all lines of\ncode, as the code lines are at least partial credit but may not qualify for full credit.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-A")]),_v(" (upper case)")]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--analyze-authorship")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-A")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("A darker background colour represents full credit, while a lighter background colour represents partial credit.")]),_v(" "),_c('p',[_v("If the code is attributed to a different author by the user via "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("@@author")]),_v(" tag, then the new author will be given\npartial credit.")])]),_v(" "),_c('h3',{attrs:{"id":"assets-a-3"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--assets")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-a")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#assets-a-3","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{attrs:{"id":"section-assets"}},[_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--assets ASSETS_DIRECTORY")])]),_v(": Specifies where to place assets for report generation.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ASSETS_DIRECTORY")]),_v(" The directory containing the assets files. A "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("favicon.ico")]),_v(" file can be placed here to customize the favicon of the dashboard, while a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("title.md")]),_v(" file can be placed to customize the "),_c('a',{attrs:{"href":"https://reposense.org/ug/customizingReports.html#add-a-title"}},[_v("title")]),_v(" of the report using "),_c('a',{attrs:{"href":"https://www.markdownguide.org/basic-syntax/"}},[_v("Markdown syntax")]),_v(".")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-a")])]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--assets ./assets")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-a ./assets")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("If "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--assets")]),_v(" is not specified, RepoSense looks for assets in the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./assets")]),_v(" directory.")])])])],1),_v(" "),_c('h3',{attrs:{"id":"config-c-3"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--config")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-c")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#config-c-3","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{attrs:{"id":"section-config"}},[_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--config CONFIG_DIRECTORY")])]),_v(": Specifies that config files located in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("CONFIG_DIRECTORY")]),_v(" should be used to customize the report.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("CONFIG_DIRECTORY")]),_v(" The directory containing the config files. Should contain a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(" file. Optionally, can contain an "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(" file or/and a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("group-config.csv")]),_v(" file or/and a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("report-config.json")]),_v(" file or/and a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("blurbs.md")]),_v(" file.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-c")])]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar --config ./config")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("Cannot be used with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repos")]),_v(". The "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repos")]),_v(" flag will take precedence over this flag.")]),_v(" "),_c('li',[_v("If both "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repos")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--config")]),_v(" are not specified, RepoSense looks for config files in the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./config")]),_v(" directory.")]),_v(" "),_c('li',[_v("Config files must follow "),_c('a',{attrs:{"href":"/RepoSense/ug/configFiles.html"}},[_v("this")]),_v(" format.")])])])],1),_v(" "),_c('h3',{attrs:{"id":"formats-f-3"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--formats")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-f")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#formats-f-3","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--formats LIST_OF_FORMATS")])]),_v(": Specifies which file extensions to be included in the analysis.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("LIST_OF_FORMATS")]),_v(" A space-separated list of file extensions that should be included in the analysis."),_c('br'),_v("\nDefault: all file formats")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-f")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--formats css fxml gradle")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-f css fxml gradle")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Binary file formats, such as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("jpg")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("png")]),_v(","),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("exe")]),_v(","),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("zip")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("rar")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("docx")]),_v(", and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("pptx")]),_v(", all will be labelled as the file type "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("binary")]),_v(" in the generated report.")])]),_v(" "),_c('h3',{attrs:{"id":"find-previous-authors-f-3"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--find-previous-authors")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-F")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#find-previous-authors-f-3","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--find-previous-authors")])]),_v(": Utilizes Git blame's ignore revisions functionality, RepoSense will attempt to blame the line changes caused by commits in the ignore commit list to the previous authors who altered those lines (if available).")]),_v(" "),_c('ul',[_c('li',[_v("Default: RepoSense will assume that no authors are responsible for the code changes in the lines altered by commits in the ignore commit list.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-F")]),_v(" (uppercase F)")]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--find-previous-authors")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-F")])])]),_v(" "),_c('h3',{attrs:{"id":"help-h-3"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--help")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-h")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#help-h-3","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--help")])]),_v(": Shows the help message.")]),_v(" "),_c('ul',[_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-h")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Cannot be used with any other flags. This flag takes precedence over all other flags.")])]),_v(" "),_c('h3',{attrs:{"id":"ignore-standalone-config-i-3"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--ignore-standalone-config")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-i")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#ignore-standalone-config-i-3","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--ignore-standalone-config")])]),_v(": Specifies that the standalone config file in the repo should be ignored.")]),_v(" "),_c('ul',[_c('li',[_v("Default: the standalone config file is not ignored")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-i")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--ignore-standalone-config")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-i")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("This flag overrides the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Ignore standalone config")]),_v(" field in the CSV config file.")])]),_v(" "),_c('h3',{attrs:{"id":"ignore-filesize-limit-i-3"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--ignore-filesize-limit")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-I")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#ignore-filesize-limit-i-3","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--ignore-filesize-limit")])]),_v(": Specifies that the file size limit (both default and user-defined) should be ignored during the analysis.")]),_v(" "),_c('ul',[_c('li',[_v("Default: the file size limit is not ignored")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-I")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--ignore-filesize-limit")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-I")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("All files are subject to a default file size limit or a custom size limit set by the user. Most files should not be\naffected by the default size limit. This flag can be useful for including files in your report that are affected by\nthe size limit. Note that this flag may result in large report sizes and/or slower report generation.")])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("This flag overrides the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Ignore file size limit")]),_v(" field in the CSV config file.")])]),_v(" "),_c('h3',{attrs:{"id":"last-modified-date-l-3"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--last-modified-date")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-l")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#last-modified-date-l-3","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--last-modified-date")])]),_v(": Specifies that the last modified date of each line of code should be added to "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("authorship.json")]),_v(".")]),_v(" "),_c('ul',[_c('li',[_v("Default: the last modified date of each line of code will not be added to "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("authorship.json")])]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-l")]),_v(" (lowercase L)")]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--last-modified-date")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-l")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("Cannot be used with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--shallow-cloning")]),_v(". This may result in an incorrect last modified date.")]),_v(" "),_c('li',[_v("The last modified dates will be in the same timezone specified with the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--timezone")]),_v(" flag.")])])]),_v(" "),_c('h3',{attrs:{"id":"originality-threshold-ot-3"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--originality-threshold")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-ot")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#originality-threshold-ot-3","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--originality-threshold [VALUE]")])]),_v(": Specifies the cut-off point for partial and full credit\nin "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--analyze-authorship")]),_v(". Author will be given full credit if their contribution exceeds this threshold, else partial\ncredit is given.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("VALUE")]),_v(" Optional. Acceptable range: [0.0, 1.0]."),_c('br'),_v("\nDefault: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("0.51")])]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-ot")])]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--originality-threshold 0.66")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-ot 0.66")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("Requires "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--analyze-authorship")]),_v(" flag.")]),_v(" "),_c('li',[_v("An author's contribution, or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("originality score")]),_v(", is calculated using Levenshtein Distance (Edit Distance) algorithm.\nWe compare the difference between current code line and its previous versions.")])])]),_v(" "),_c('h3',{attrs:{"id":"output-o-3"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--output")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-o")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#output-o-3","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--output OUTPUT_DIRECTORY")])]),_v(": Indicates where to save the report generated.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("OUTPUT_DIRECTORY")]),_v(" The location for the generated "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("reposense-report")]),_v(" folder."),_c('br'),_v("\nDefault: current directory")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-o")])]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--output ./foo")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-o ./foo")]),_v(" (the report will be in the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./foo/reposense-report")]),_v(" folder)")])]),_v(" "),_c('h3',{attrs:{"id":"period-p-3"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--period")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-p")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#period-p-3","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--period PERIOD")])]),_v(": Specifies the period of analysis window.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("PERIOD")]),_v(" The period of analysis window, in the format "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("nd")]),_v(" (for n days) or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("nw")]),_v(" (for n weeks). It is used to calculate end date if only start date is specified, or calculate end date if only start date is specified.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-p")])]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--period 30d")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--period 4w")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("If both start date and end date are not specified, the date of generating the report will be taken as the end date.")]),_v(" "),_c('li',[_v("May analyze the incorrect date range if used with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since d1")]),_v(". The program will throw a warning.")]),_v(" "),_c('li',[_v("Cannot be used with both "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--until")]),_v(". The program will throw an exception.")])])]),_v(" "),_c('h3',{attrs:{"id":"repo-repos-r-3"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repo")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repos")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-r")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#repo-repos-r-3","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repo REPO_LOCATION")])]),_v(": Specifies which repositories to analyze.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("REPO_LOCATION")]),_v(" A list of URLs or the disk location of the git repositories to analyze, separated by spaces.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-r")])]),_v(" "),_c('li',[_v("Examples:\n"),_c('ul',[_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repos https://github.com/reposense/RepoSense.git")])]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repo https://github.com/reposense/RepoSense.git c:/myRepose/foo/bar")]),_v(": analyzes the two specified repos (one remote, one local) and generates one report containing details of both.")])])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Cannot be used with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--config")]),_v(". This flag takes precedence over "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--config")]),_v(".")])]),_v(" "),_c('h3',{attrs:{"id":"shallow-cloning-s-3"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--shallow-cloning")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-S")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#shallow-cloning-s-3","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--shallow-cloning")])]),_v(": Clones repositories using Git's shallow cloning functionality, which can significantly reduce the time taken to clone large repositories. However, the flag should not be used for smaller repositories where the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(".git")]),_v(" file is smaller than 500 MB, as it would create overhead.")]),_v(" "),_c('ul',[_c('li',[_v("Default: RepoSense does not clone repositories using Git's shallow cloning functionality.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-S")]),_v(" (uppercase S)")]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--shallow-cloning")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-S")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Cannot be used with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--last-modified-date")]),_v(". This may result in an incorrect last modified date.")])]),_v(" "),_c('h3',{attrs:{"id":"since-s-3"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-s")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#since-s-3","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since START_DATE")])]),_v(": Specifies the start date for the period to be analyzed.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("START_DATE")]),_v(" The first day of the period to be analyzed, in the format "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("DD/MM/YYYY")]),_v("."),_c('br'),_v("\nDefault: one month before the current date")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-s")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since 21/10/2017")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-s 21/10/2017")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("If the start date is not specified, only commits made one month before the end date (if specified) or the date of generating the report, will be captured and analyzed.")]),_v(" "),_c('li',[_v("If "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("d1")]),_v(" is specified as the start date ("),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since d1")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-s d1")]),_v("), then the program will search for the earliest commit date of all repositories and use that as the start date.")]),_v(" "),_c('li',[_v("If "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("d1")]),_v(" is specified together with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--period")]),_v(", then the program will warn that the date range being analyzed may be incorrect.")])])]),_v(" "),_c('h3',{attrs:{"id":"timezone-t-3"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--timezone")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-t")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#timezone-t-3","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--timezone ZONE_ID")])]),_v(": Indicates the timezone to be used for the analysis.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ZONE_ID")]),_v(" The timezone in the format "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ZONE_ID[±hh[mm]]")]),_v("."),_c('br'),_v("\nDefault: system's default timezone")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-t")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--timezone UTC+08")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-t UTC-1030")])])]),_v(" "),_c('h3',{attrs:{"id":"until-u-3"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--until")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-u")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#until-u-3","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--until END_DATE")])]),_v(": Specifies the end date of the analysis period.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("END_DATE")]),_v(" The last date of the period to be analyzed, in the format "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("DD/MM/YYYY")]),_v("."),_c('br'),_v("\nDefault: current date")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-u")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--until 21/10/2017")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-u 21/10/2017")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Note: If the end date is not specified, the date of generating the report will be taken as the end date.")])]),_v(" "),_c('h3',{attrs:{"id":"version-v-3"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--version")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-V")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#version-v-3","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--version")])]),_v(": Shows the version of RepoSense.")]),_v(" "),_c('ul',[_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-V")]),_v(" (upper case)")])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Cannot be used with any other flags. This flag takes precedence over all other flags other than "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--help")]),_v(".")])]),_v(" "),_c('h3',{attrs:{"id":"view-v-3"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--view")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-v")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#view-v-3","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--view [REPORT_FOLDER]")])]),_v(": Specifies that the report should be opened in the default browser.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("REPORT_FOLDER")]),_v(" Optional. If specified, no analysis will be performed and the report specified by the argument will be opened."),_c('br'),_v("\nDefault: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./reposense-report")])]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-v")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--view")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-v")])])])],1)])],1),_v(" "),_c('p'),_v(" "),_c('h3',{attrs:{"id":"customize-using-csv-config-files"}},[_v("Customize using CSV config files"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#customize-using-csv-config-files","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_v("Another, more powerful, way to customize the report is by using dedicated config files.")]),_v(" In this case you need to use the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--config")]),_v(" flag instead of the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repo")]),_v(" flag when running RepoSense, as follows:")]),_v(" "),_c('div',{staticClass:"indented-level0"},[_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('span',[_c('span',{staticClass:"glyphicon glyphicon-log-in",attrs:{"aria-hidden":"true"}})]),_v(" Appendix: "),_c('strong',[_v("CLI syntax reference → "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("config")]),_v(" flag")])])]},proxy:true}])},[_v(" "),_c('div',[_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--config CONFIG_DIRECTORY")])]),_v(": Specifies that config files located in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("CONFIG_DIRECTORY")]),_v(" should be used to customize the report.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("CONFIG_DIRECTORY")]),_v(" The directory containing the config files. Should contain a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(" file. Optionally, can contain an "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(" file or/and a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("group-config.csv")]),_v(" file or/and a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("report-config.json")]),_v(" file or/and a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("blurbs.md")]),_v(" file.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-c")])]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar --config ./config")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("Cannot be used with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repos")]),_v(". The "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repos")]),_v(" flag will take precedence over this flag.")]),_v(" "),_c('li',[_v("If both "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repos")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--config")]),_v(" are not specified, RepoSense looks for config files in the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./config")]),_v(" directory.")]),_v(" "),_c('li',[_v("Config files must follow "),_c('a',{attrs:{"href":"/RepoSense/ug/configFiles.html"}},[_v("this")]),_v(" format.")])])])],1)])],1),_v(" "),_c('p'),_v(" "),_c('box',{attrs:{"type":"tip","seamless":""}},[_c('p',[_c('strong',[_v("Managing config files collaboratively")]),_v(": If you use RepoSense to monitor a large number of programmers, it may be more practical to get the programmers to submit PRs to update the config files as necessary ("),_c('tooltip',{scopedSlots:_u([{key:"content",fn:function(){return [_v("a coder realizes some of her code is missing from the report because she used multiple git usernames, and wants to add the additional usernames to the config file")]},proxy:true}])},[_v("example use case")]),_v(").")],1),_v(" "),_c('p',[_v("To ensure that their PRs are correct, you can use "),_c('a',{attrs:{"href":"https://www.netlify.com/blog/2016/07/20/introducing-deploy-previews-in-netlify/"}},[_v("Netlify "),_c('em',[_v("deploy previews")])]),_v(" to preview how the report would look like after the PR has been merged. More details are in the panels below.")]),_v(" "),_c('div',{staticClass:"indented-level0"},[_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('span',[_c('span',{staticClass:"glyphicon glyphicon-log-in",attrs:{"aria-hidden":"true"}})]),_v(" Appendix: "),_c('strong',[_v("Using RepoSense with Netlify → Setting up")])])]},proxy:true}])},[_v(" "),_c('div',[_c('box',{attrs:{"type":"warning","seamless":""}},[_c('p',[_v("Note that Netlify has a low limit for free tier users (only 300 "),_c('em',[_v("build minutes")]),_v(" per month as at June 2020 -- a single report generation can take 2-3 build minutes, longer if your report includes many/big repositories).")])]),_v(" "),_c('h2',{attrs:{"id":"setting-up-4"}},[_v("Setting up"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#setting-up-4","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('span',{staticClass:"badge bg-dark bigger-level0"},[_v("Step 1")]),_v(" "),_c('strong',[_v("Fork the "),_c('em',[_v("publish-RepoSense")]),_v(" repository")]),_v(" using this "),_c('a',{attrs:{"href":"https://github.com/RepoSense/publish-RepoSense/fork"}},[_v("link")]),_v(". Optionally, you can rename the fork to match your RepoSense report e.g., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("project-code-dashboard")]),_v(".")]),_v(" "),_c('p',[_c('span',{staticClass:"badge bg-dark bigger-level0"},[_v("Step 2")]),_v(" "),_c('strong',[_v("Set up Netlify for your fork")]),_v(" as described in this "),_c('a',{attrs:{"href":"https://www.netlify.com/blog/2016/09/29/a-step-by-step-guide-deploying-on-netlify/"}},[_v("guide")]),_v("."),_c('br'),_v(" "),_c('mark',[_v("You will need to use the following in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Step 5: Configure Your Settings")]),_v(" of that guide")]),_v(":")]),_v(" "),_c('ul',[_c('li',[_v("build command: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("pip install requests && ./run.sh")]),_c('br')]),_v(" "),_c('li',[_v("publish directory: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./reposense-report")])])]),_v(" "),_c('p',[_v("After Netlify finishes building the site, you should be able to see a dummy report at the URL of your Netlify site.")]),_v(" "),_c('p',[_c('span',{staticClass:"badge bg-dark bigger-level0"},[_v("Step 3")]),_v(" "),_c('strong',[_v("Generate the report you want")]),_v(" by updating the settings in your fork.")]),_v(" "),_c('ol',[_c('li',[_v("Go to the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("run.sh")]),_v(" file of your fork (on GitHub).")]),_v(" "),_c('li',[_v("Update the last line (i.e., the command for running RepoSense) to match the report you want to generate:"),_c('br'),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar --repos FULL_REPO_URL")]),_v(" (assuming you want to generate a default report for just one repo)"),_c('br'),_v("\ne.g., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar --repos https://github.com/reposense/RepoSense.git")]),_v(" ("),_c('mark',[_v("note the .git at the end of the repo URL")]),_v(")")]),_v(" "),_c('li',[_v("Commit the file. This will trigger Netlify to rebuild the report.")]),_v(" "),_c('li',[_v("Go to the URL of your Netlify site to see the updated RepoSense report (it might take about 2-5 minutes for Netlify to generate the report).")])])],1)])],1),_v(" "),_c('p'),_v(" "),_c('div',{staticClass:"indented-level0"},[_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('span',[_c('span',{staticClass:"glyphicon glyphicon-log-in",attrs:{"aria-hidden":"true"}})]),_v(" Appendix: "),_c('strong',[_v("Using RepoSense with Netlify → PR previews")])])]},proxy:true}])},[_v(" "),_c('div',[_c('h2',{attrs:{"id":"pr-previews"}},[_v("PR previews"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#pr-previews","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("After setting up Netlify for your repo containing RepoSense settings, when a PR comes in to that repo to update any setting, you can scroll down the PR page and in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("All checks have passed")]),_v(", click on the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Details")]),_v(" beside "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("deploy/netlify — Deploy preview ready!")]),_v(" to see a preview of the report as per the changes in the PR.\n"),_c('a',{attrs:{"href":"/RepoSense/images/publishingguide-netlifypreview.png","target":"_self"}},[_c('img',{staticClass:"img-fluid",attrs:{"src":"/RepoSense/images/publishingguide-netlifypreview.png","alt":"Netlify Preview","title":"Netlify Preview"}})])])])])],1),_v(" "),_c('p')]),_v(" "),_c('h3',{attrs:{"id":"get-target-repos-to-provide-more-info"}},[_v("Get target repos to provide more info"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#get-target-repos-to-provide-more-info","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_v("If feasible, you can also customize the target repos to play well with RepoSense")]),_v(" in the following two ways:")]),_v(" "),_c('p',[_v("1. Add a "),_c('em',[_v("standalone config file")]),_v(" to the repo to provide more config details to RepoSense. The format of the file is given below.")]),_v(" "),_c('div',{staticClass:"indented-level0"},[_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('span',[_c('span',{staticClass:"glyphicon glyphicon-log-in",attrs:{"aria-hidden":"true"}})]),_v(" Appendix: "),_c('strong',[_v("Standalone config file format")])])]},proxy:true}])},[_v(" "),_c('div',[_c('h2',{attrs:{"id":"config-json-standalone-config-file-3"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("config.json")]),_v(" (standalone config file)"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#config-json-standalone-config-file-3","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Repo owners can provide the following additional information to RepoSense using a config file that we call the "),_c('strong',[_c('em',[_v("standalone config file")])]),_v(":")]),_v(" "),_c('ul',[_c('li',[_v("which files/authors/commits to analyze/omit")]),_v(" "),_c('li',[_v("which git and git host usernames belong to which authors")]),_v(" "),_c('li',[_v("the display of an author")])]),_v(" "),_c('p',[_v("To use this feature, add a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("_reposense/config.json")]),_v(" to the root of your repo using the format in the example below ("),_c('a',{attrs:{"href":"https://github.com/reposense/RepoSense/blob/master/_reposense/config.json"}},[_v("another example")]),_v(") and "),_c('strong',[_v("commit it")]),_v(" (reason: RepoSense can see committed code only):")]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"no-line-numbers hljs json"}},[_c('span',[_v("{\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"ignoreGlobList\"")]),_v(": ["),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"about-us/**\"")]),_v(", "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"**index.html\"")]),_v("],\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"formats\"")]),_v(": ["),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"html\"")]),_v(", "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"css\"")]),_v("],\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"ignoreCommitList\"")]),_v(": ["),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"90018e49f129ce7e0abdc8b18e91c9813588c601\"")]),_v(", "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"67890def\"")]),_v(", "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"abc123..def456\"")]),_v("],\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"ignoreAuthorList\"")]),_v(": ["),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"charlie\"")]),_v("],\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"authors\"")]),_v(":\n")]),_c('span',[_v(" [\n")]),_c('span',[_v(" {\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"gitId\"")]),_v(": "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"alice\"")]),_v(",\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"emails\"")]),_v(": ["),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"alice@example.com\"")]),_v(", "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"alicet@example.com\"")]),_v("],\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"displayName\"")]),_v(": "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"Alice T.\"")]),_v(",\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"authorNames\"")]),_v(": ["),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"AT\"")]),_v(", "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"A\"")]),_v("],\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"ignoreGlobList\"")]),_v(": ["),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"**.css\"")]),_v("]\n")]),_c('span',[_v(" },\n")]),_c('span',[_v(" {\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"gitId\"")]),_v(": "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"bob\"")]),_v("\n")]),_c('span',[_v(" }\n")]),_c('span',[_v(" ]\n")]),_c('span',[_v("}\n")])])]),_c('p',[_v("Note: all fields are optional unless specified otherwise.")]),_v(" "),_c('p',[_c('strong',[_v("Fields to provide "),_c('em',[_v("repository-level")]),_v(" info")]),_v(":")]),_v(" "),_c('ul',[_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ignoreGlobList")]),_v(": Folders/files to ignore, specified using the "),_c('a',{attrs:{"href":"https://docs.oracle.com/javase/tutorial/essential/io/fileOps.html#glob"}},[_c('em',[_v("glob format")])]),_v(".")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("formats")]),_v(": File formats to analyze. Binary file formats, such as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("png")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("jpg")]),_v(", will be automatically labelled as the file type "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("binary")]),_v(" in the generated report. Default: all file formats")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ignoreCommitList")]),_v(": The list of commits to ignore during analysis. For accurate results, the commits should be provided with their full hash. Additionally, a range of commits can be specified using the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("..")]),_v(" notation e.g. "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("abc123..def456")]),_v(" (both inclusive).")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ignoreAuthorList")]),_v(": The list of authors to ignore during analysis. Authors specified in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("authors")]),_v(" field or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(" will be also be omitted if they are in this list. Authors should be specified by their "),_c('a',{attrs:{"href":"#a-note-about-git-author-name"}},[_v("Git Author Name")]),_v(".")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("fileSizeLimit")]),_v(": A file size limit for the repository in bytes as a single number without units, that will override the default file size limit. If not specified, the default file size limit will continue to be used.")])]),_v(" "),_c('p',[_c('strong',[_v("Fields to provide "),_c('em',[_v("author-level")]),_v(" info")]),_v(":"),_c('br'),_v("\nNote: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("authors")]),_v(" field should contain "),_c('em',[_v("all")]),_v(" authors that should be captured in the analysis.")]),_v(" "),_c('ul',[_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("gitId")]),_v(": Username of the author. "),_c('span',{staticClass:"badge bg-danger"},[_v("mandatory")]),_v(" field.")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("emails")]),_v(": Associated git emails of the author. For GitHub, this can be found in your "),_c('a',{attrs:{"href":"https://github.com/settings/emails"}},[_v("GitHub settings")]),_v(".")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("displayName")]),_v(": Name to display on the report for this author.")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("authorNames")]),_v(": Git Author Name(s) used in the author's commits. By default, RepoSense assumes an author would use their remote Git Host username as the Git username too. The meaning of "),_c('em',[_v("Git Author Name")]),_v(" is explained in "),_c('a',{attrs:{"href":"#a-note-about-git-author-name"}},[_c('em',[_v("A note about git author name")])]),_v(".")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ignoreGlobList")]),_v(": "),_c('em',[_v("Additional")]),_v(" (i.e. on top of the repo-level "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ignoreGlobList")]),_v(") folders/files to ignore for a specific author. The path glob syntax is specified by the "),_c('a',{attrs:{"href":"https://docs.oracle.com/javase/tutorial/essential/io/fileOps.html#glob"}},[_c('em',[_v("glob format")])]),_v(". In the example above, the actual "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ignoreGlobList")]),_v(" for "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("alice")]),_v(" would be "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("[\"about-us/**\", \"**index.html\", \"**.css\"]")]),_v(".")])]),_v(" "),_c('p',[_v("To verify your standalone configuration is as intended, add the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("_reposense/config.json")]),_v(" to your local copy of repo and run RepoSense against it as follows:"),_c('br')]),_v(" "),_c('ul',[_c('li',[_v("Format: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar --repo LOCAL_REPO_LOCATION")]),_v(" "),_c('br')]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar --repo c:/myRepose/foo/bar")]),_c('br'),_v("\nAfter that, view the report to see if the configuration you specified in the config file is being reflected correctly in the report.")])]),_v(" "),_c('h2',{attrs:{"id":"a-note-about-git-author-name-3"}},[_v("A note about git author name"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#a-note-about-git-author-name-3","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Git Author Name")]),_v(" refers to the customizable author's display name set in the local "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(".gitconfig")]),_v(" file. For example, in the Git Log's display:")]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"no-line-numbers hljs"}},[_c('span',[_v("...\n")]),_c('span',[_v("commit cd7f610e0becbdf331d5231887d8010a689f87c7\n")]),_c('span',[_v("Author: ConfiguredAuthorName \n")]),_c('span',[_v("Date: Fri Feb 9 19:14:41 2018 +0800\n")]),_c('span',[_v("\n")]),_c('span',[_v(" Make some changes to show my new author's name\n")]),_c('span',[_v("\n")]),_c('span',[_v("commit e3f699fd4ef128eebce98d5b4e5b3bb06a512f49\n")]),_c('span',[_v("Author: ActualGitHostId \n")]),_c('span',[_v("Date: Fri Feb 9 19:13:13 2018 +0800\n")]),_c('span',[_v("\n")]),_c('span',[_v(" Initial commit\n")]),_c('span',[_v(" ...\n")])])]),_c('p',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ActualGitHostId")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ConfiguredAuthorName")]),_v(" are both "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Git Author Name")]),_v(" of the same author."),_c('br'),_v("\nTo find the author name that you are currently using for your current git repository, run the following command within your git repository:")]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"no-line-numbers hljs"}},[_c('span',[_v("git config user.name\n")])])]),_c('p',[_v("To set the author name to the value you want (e.g., to set it to your GitHub username) for your current git repository, you can use the following command ("),_c('a',{attrs:{"href":"https://www.git-tower.com/learn/git/faq/change-author-name-email"}},[_v("more info")]),_v("):")]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"no-line-numbers hljs"}},[_c('span',[_v("git config user.name \"YOUR_AUTHOR_NAME”\n")])])]),_c('p',[_v("To set the author name to use a default value you want for future git repositories, you can use the following command:")]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"no-line-numbers hljs"}},[_c('span',[_v("git config --global user.name \"YOUR_AUTHOR_NAME”\n")])])]),_c('p',[_v("RepoSense expects the Git Author Name to be the same as author's username on the Git hosting platform (GitHub, GitLab, BitBucket). If an author's "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Git Author Name")]),_v(" is different from their username on the Git hosting platform, the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Git Author Name")]),_v(" needs to be specified in the standalone config file. If the author has more than one "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Git Author Name")]),_v(", multiple values can be entered too.")]),_v(" "),_c('box',{attrs:{"type":"warning","seamless":""}},[_c('p',[_v("Note: Symbols such as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("\"")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("!")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("/")]),_v(" etc. in your author name will be omitted, which may reduce the accuracy of the analysis if 2 names in the repository are approximately similar.")])])],1)])],1),_v(" "),_c('p'),_v(" "),_c('p',[_v("2. To have more precise control over which code segment is attributed to which author, authors can annotate their code using "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("@@author")]),_v(" tags, as explained below.")]),_v(" "),_c('div',{staticClass:"indented-level0"},[_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('span',[_c('span',{staticClass:"glyphicon glyphicon-log-in",attrs:{"aria-hidden":"true"}})]),_v(" Appendix: "),_c('strong',[_v("Using "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("@@author")]),_v(" tags")])])]},proxy:true}])},[_v(" "),_c('div',[_c('h1',{staticClass:"display-4",attrs:{"id":"appendix-using-author-tags"}},[_c('span',[_v("Appendix: Using "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("@@author")]),_v(" tags")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#appendix-using-author-tags","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{staticClass:"lead"},[_c('p',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("@@author")]),_v(" tags is a rather invasive but sometimes necessary way to provide more information to RepoSense, by annotating the code being analyzed.")])]),_v(" "),_c('p',[_v("If you want to override the code authorship deduced by RepoSense (which is based on Git blame/log data), you can use "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("@@author")]),_v(" tags to specify certain code segments that should be credited to a certain author irrespective of git history. An example scenario where this is useful is when a method was originally written by one author but a second author did some minor refactoring to it; in this case, RepoSense might attribute the code to the second author while you may want to attribute the code to the first author.")]),_v(" "),_c('p',[_v("There are 2 types of "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("@@author")]),_v(" tags:")]),_v(" "),_c('ul',[_c('li',[_v("Start Tags (format: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("@@author AUTHOR_GIT_AUTHOR_NAME")]),_v("): A start tag indicates the start of a code segment written by the author identified by the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("AUTHOR_GIT_AUTHOR_NAME")]),_v(".")]),_v(" "),_c('li',[_v("End Tags (format: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("@@author")]),_v("): Optional. An end tag indicates the end of a code segment written by the author identified by the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("AUTHOR_GIT_AUTHOR_NAME")]),_v(" of the start tag.")])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("If an end tag is not provided, the code till the next start tag (or the end of the file) will be attributed to the author specified in the start tag above. Use only when necessary to minimize polluting your code with these extra tags.")])]),_v(" "),_c('box',{attrs:{"type":"warning","seamless":""}},[_c('p',[_v("If an end tag is provided without a corresponding start tag, the code until the next start tag, the next end tag, or the end of the file, will not be attributed to any author. This should only be used if the code should not be attributed to any author.")])]),_v(" "),_c('p',[_v("The "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("@@author")]),_v(" tags should be enclosed within a single-line comment, using the comment syntax of the file in concern. Below are some examples:")]),_v(" "),_c('p',[_c('a',{attrs:{"href":"/RepoSense/images/add-author-tags.png","target":"_self"}},[_c('img',{staticClass:"img-fluid",attrs:{"src":"/RepoSense/images/add-author-tags.png","alt":"author tags"}})])]),_v(" "),_c('p',[_v("Currently, the following comment formats are supported:")]),_v(" "),_c('ul',[_c('li',[_v("// @@author authorName")]),_v(" "),_c('li',[_v("/* @@author authorName */")]),_v(" "),_c('li',[_v("/* @@author authorName")]),_v(" "),_c('li',[_v("# @@author authorName")]),_v(" "),_c('li',[_v("% @@author authorName")]),_v(" "),_c('li',[_v("")]),_v(" "),_c('li',[_v("")]),_v(" "),_c('li',[_v("[//]: # (@@author authorName)")])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("RepoSense checks whether the line matches the supported comment formats. If the line does not match the formats,\nRepoSense treats it as a normal line.")]),_v(" "),_c('p',[_v("The code until the next start tag, the end tag, or the end of file will be attributed to that author.")])]),_v(" "),_c('p',[_v("Note: Remember to "),_c('strong',[_v("commit")]),_v(" the files after the changes. (reason: RepoSense can see committed code only)")]),_v(" "),_c('p',[_v("Special thanks to "),_c('a',{attrs:{"href":"https://github.com/se-edu/collate"}},[_v("Collate project")]),_v(" for providing the inspiration for this functionality.")])],1)])],1),_v(" "),_c('p'),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("In both instances, it is "),_c('strong',[_v("necessary to commit any changes")]),_v(" for them to be detected by RepoSense.")])]),_v(" "),_c('p',[_v("3. Add a git "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(".mailmap")]),_v(" file at the top-level of the repository, specifying mapped authors/commiters and/or e-mail addresses as per "),_c('a',{attrs:{"href":"https://git-scm.com/docs/gitmailmap"}},[_v("gitmailmap documentation")]),_v(". Any mappings specified here will be applied by git before all other RepoSense configurations. Configuration via "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(".mailmap")]),_v(" is particularly useful if you want the mapping to apply for all git commands as well instead of just for RepoSense.")]),_v(" "),_c('h3',{attrs:{"id":"personalizing-reports"}},[_v("Personalizing Reports"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#personalizing-reports","onclick":"event.stopPropagation()"}})]),_v(" "),_c('h4',{attrs:{"id":"add-a-title"}},[_v("Add a title"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#add-a-title","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("A title component can be added by creating a file titled "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("title.md")]),_v(" in the assets directory. You can specify the assets directory according to the reference below:")]),_v(" "),_c('div',{staticClass:"indented-level0"},[_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('span',[_c('span',{staticClass:"glyphicon glyphicon-log-in",attrs:{"aria-hidden":"true"}})]),_v(" Appendix: "),_c('strong',[_v("CLI syntax reference → "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("assets")]),_v(" flag")])])]},proxy:true}])},[_v(" "),_c('div',[_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--assets ASSETS_DIRECTORY")])]),_v(": Specifies where to place assets for report generation.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ASSETS_DIRECTORY")]),_v(" The directory containing the assets files. A "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("favicon.ico")]),_v(" file can be placed here to customize the favicon of the dashboard, while a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("title.md")]),_v(" file can be placed to customize the "),_c('a',{attrs:{"href":"https://reposense.org/ug/customizingReports.html#add-a-title"}},[_v("title")]),_v(" of the report using "),_c('a',{attrs:{"href":"https://www.markdownguide.org/basic-syntax/"}},[_v("Markdown syntax")]),_v(".")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-a")])]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--assets ./assets")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-a ./assets")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("If "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--assets")]),_v(" is not specified, RepoSense looks for assets in the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./assets")]),_v(" directory.")])])])],1)])],1),_v(" "),_c('p'),_v(" "),_c('p',[_v("The title can render a combination of Markdown/HTML and plaintext ("),_c('a',{attrs:{"href":"https://github.com/reposense/RepoSense/blob/master/docs/ug/title.md"}},[_v("example")]),_v("), and will appear on the top of the left panel as shown below:\n"),_c('a',{attrs:{"href":"/RepoSense/images/title-example.png","target":"_self"}},[_c('img',{staticClass:"img-fluid",attrs:{"src":"/RepoSense/images/title-example.png","alt":"Title Component Example"}})])]),_v(" "),_c('p',[_v("Do note that the width of the title is bound by the width of the left panel.")]),_v(" "),_c('p',[_v("For more information on how to use Markdown, see the "),_c('a',{attrs:{"href":"https://www.markdownguide.org/"}},[_v("Markdown Guide")]),_v(".")]),_v(" "),_c('h4',{attrs:{"id":"add-blurbs-for-branches"}},[_v("Add blurbs for branches"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#add-blurbs-for-branches","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("A blurb can be added for a repository branch by creating a file titled "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("blurbs.md")]),_v(" in the config directory. The blurbs will be visible when grouping by "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repo/Branch")]),_v(". The format of the file is given below:")]),_v(" "),_c('div',{staticClass:"indented-level0"},[_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('span',[_c('span',{staticClass:"glyphicon glyphicon-log-in",attrs:{"aria-hidden":"true"}})]),_v(" Appendix: "),_c('strong',[_v("Config files format")])])]},proxy:true}])},[_v(" "),_c('div',[_c('h2',{attrs:{"id":"blurbs-md-3"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("blurbs.md")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#blurbs-md-3","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("You can optionally use "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("blurbs.md")]),_v(" to add blurbs in Markdown syntax for repository branches. These blurbs will be seen when grouping by "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repo/Branch")]),_v(". ("),_c('a',{attrs:{"href":"https://github.com/reposense/RepoSense/blob/master/docs/ug/blurbs.md"}},[_v("example")]),_v(")")]),_v(" "),_c('p',[_c('strong',[_v("Format")]),_v(":")]),_v(" "),_c('ul',[_c('li',[_v("First line in section: Link to the repository branch.")]),_v(" "),_c('li',[_v("Second line onwards: Blurb content.")]),_v(" "),_c('li',[_v("Delimiter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("")]),_v(". Everything on the line after the delimiter will be ignored.")])])])])],1),_v(" "),_c('p'),_v(" "),_c('p',[_v("Specifying the config directory can be done as follows:")]),_v(" "),_c('div',{staticClass:"indented-level0"},[_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('span',[_c('span',{staticClass:"glyphicon glyphicon-log-in",attrs:{"aria-hidden":"true"}})]),_v(" Appendix: "),_c('strong',[_v("CLI syntax reference → "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("config")]),_v(" flag")])])]},proxy:true}])},[_v(" "),_c('div',[_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--config CONFIG_DIRECTORY")])]),_v(": Specifies that config files located in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("CONFIG_DIRECTORY")]),_v(" should be used to customize the report.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("CONFIG_DIRECTORY")]),_v(" The directory containing the config files. Should contain a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(" file. Optionally, can contain an "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(" file or/and a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("group-config.csv")]),_v(" file or/and a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("report-config.json")]),_v(" file or/and a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("blurbs.md")]),_v(" file.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-c")])]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar --config ./config")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("Cannot be used with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repos")]),_v(". The "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repos")]),_v(" flag will take precedence over this flag.")]),_v(" "),_c('li',[_v("If both "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repos")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--config")]),_v(" are not specified, RepoSense looks for config files in the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./config")]),_v(" directory.")]),_v(" "),_c('li',[_v("Config files must follow "),_c('a',{attrs:{"href":"/RepoSense/ug/configFiles.html"}},[_v("this")]),_v(" format.")])])])],1)])],1),_v(" "),_c('p')],1)])],1),_v(" "),_c('p'),_v(" "),_c('h1',{attrs:{"id":"3-share-your-reports"}},[_c('thumbnail',{attrs:{"circle":"","background":"#006600","font-color":"white","size":"50"}},[_v("3")]),_v(" "),_c('strong',[_v("Share")]),_v(" your reports"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#3-share-your-reports","onclick":"event.stopPropagation()"}})],1),_v(" "),_c('p',[_v("Finally, you can learn how to share those reports with others, and how to automate the whole process.")]),_v(" "),_c('div',{staticClass:"indented-level0"},[_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('span',[_c('span',{staticClass:"glyphicon glyphicon-log-in",attrs:{"aria-hidden":"true"}})]),_v(" "),_c('strong',[_v("Sharing reports")])])]},proxy:true}])},[_v(" "),_c('div',[_c('h1',{staticClass:"display-4",attrs:{"id":"sharing-reports"}},[_c('span',[_v("Sharing reports")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#sharing-reports","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{staticClass:"lead"},[_c('p',[_c('strong',[_v("Often, you would want to share the RepoSense report with others.")]),_v(" For example, a teacher using RepoSense for a programming class might want to share the report privately with tutors or publish it so that everyone can see it.")])]),_v(" "),_c('p',[_v("The sections below explain various ways of sharing a RepoSense report.")]),_v(" "),_c('h3',{attrs:{"id":"share-privately"}},[_v("Share privately"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#share-privately","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("To share a RepoSense report privately, simply find a way to share the folder containing the report (by default, it will be in a folder named "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("reposense-report")]),_v("). For example, you can zip that folder and share it with the intended recipients.")]),_v(" "),_c('p',[_v("You can point the recipients to the "),_c('a',{attrs:{"href":"/RepoSense/ug/usingReports.html"}},[_c('em',[_c('strong',[_v("Using reports")])])]),_v(" section for guidance on how to view reports.")]),_v(" "),_c('h3',{attrs:{"id":"publish-on-the-web"}},[_v("Publish on the web"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#publish-on-the-web","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("As RepoSense reports are in a web page format, you can publish a report by simply uploading it onto any web hosting service. Given below are several options that not only allow to publish reports, but "),_c('strong',[_v("also enable various levels of automating")]),_v(" the entire process (e.g., automatically update the report daily).")]),_v(" "),_c('div',{staticClass:"indented-level0"},[_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('span',[_c('span',{staticClass:"glyphicon glyphicon-log-in",attrs:{"aria-hidden":"true"}})]),_v(" Appendix: "),_c('strong',[_v("Using RepoSense with GitHub Actions")])])]},proxy:true}])},[_v(" "),_c('div',[_c('h1',{staticClass:"display-4",attrs:{"id":"appendix-reposense-with-github-actions"}},[_c('span',[_v("Appendix: RepoSense with GitHub Actions")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#appendix-reposense-with-github-actions","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{attrs:{"id":"section-setting-up"}},[_c('div',{staticClass:"lead"},[_c('p',[_v("You can use "),_c('a',{attrs:{"href":"https://github.com/features/actions"}},[_c('em',[_v("GitHub Actions")])]),_v(" (together with other GitHub tools) to automate the generating and publishing of RepoSense reports.")])]),_v(" "),_c('h2',{attrs:{"id":"setting-up-5"}},[_v("Setting up"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#setting-up-5","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',[_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("The instructions below assume you are using GitHub pages to host your report.")])]),_v(" "),_c('p',[_c('span',{staticClass:"badge bg-dark bigger-level0"},[_v("Step 1")]),_v(" "),_c('strong',[_v("Fork the "),_c('em',[_v("publish-RepoSense")]),_v(" repository")]),_v(" using this "),_c('a',{attrs:{"href":"https://github.com/RepoSense/publish-RepoSense/fork"}},[_v("link")]),_v(". Optionally, you can rename the fork to match your RepoSense report e.g., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("project-code-dashboard")]),_v(".")])],1),_v(" "),_c('p',[_c('span',{staticClass:"badge bg-dark bigger-level0"},[_v("Step 2")]),_v(" "),_c('strong',[_v("Activate GitHub Actions on the forked repository:")])]),_v(" "),_c('ol',[_c('li',[_v("Go to the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Actions")]),_v(" page of your fork of the "),_c('a',{attrs:{"href":"https://github.com/reposense/publish-RepoSense"}},[_v("publish-RepoSense")]),_v(" repo.")]),_v(" "),_c('li',[_v("Click on the green button that says "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("I understand my workflows, go ahead and enable them")]),_v(" to enable GitHub Actions on your new repository.")])]),_v(" "),_c('p',[_c('span',{staticClass:"badge bg-dark bigger-level0"},[_v("Step 3")]),_v(" "),_c('strong',[_v("Update report configuration:")])]),_v(" "),_c('div',[_c('p',[_v("In your fork, edit "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("run.sh")]),_v(" (and if applicable, "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("group-config.csv")]),_v(") to customize the command line parameters or repositories to be analyzed.")]),_v(" "),_c('div',{staticClass:"indented-level0"},[_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('span',[_c('span',{staticClass:"glyphicon glyphicon-log-in",attrs:{"aria-hidden":"true"}})]),_v(" Appendix: "),_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("run.sh")]),_v(" format")])])]},proxy:true}])},[_v(" "),_c('div',[_c('h1',{staticClass:"display-4",attrs:{"id":"appendix-run-sh-format-3"}},[_c('span',[_v("Appendix: run.sh format")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#appendix-run-sh-format-3","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{staticClass:"lead"},[_c('p',[_c('a',{attrs:{"href":"https://github.com/reposense/publish-RepoSense/blob/master/run.sh"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("run.sh")])]),_v(" is a script used for automating RepoSense report generation.")])]),_v(" "),_c('h3',{attrs:{"id":"customizing-the-reposense-command-3"}},[_v("Customizing the RepoSense command"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#customizing-the-reposense-command-3","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("You can update the RepoSense command (i.e., the last line) in the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("run.sh")]),_v(" to match your needs.")]),_v(" "),_c('div',{staticClass:"indented-level0"},[_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('span',[_c('span',{staticClass:"glyphicon glyphicon-log-in",attrs:{"aria-hidden":"true"}})]),_v(" Appendix: "),_c('strong',[_v("CLI syntax reference")])])]},proxy:true}])},[_v(" "),_c('div',[_c('h1',{staticClass:"display-4",attrs:{"id":"appendix-cli-syntax-reference-4"}},[_c('span',[_v("Appendix: CLI syntax reference")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#appendix-cli-syntax-reference-4","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{staticClass:"lead"},[_c('p',[_v("The command "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar")]),_v(" takes several flags.")])]),_v(" "),_c('box',[_c('p',[_c('strong',[_v("Examples")]),_v(":")]),_v(" "),_c('p',[_v("An example of a command using most parameters:"),_c('br'),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar --repos https://github.com/reposense/RepoSense.git --output ./report_folder --since 31/1/2017 --until 31/12/2018 --formats java adoc xml --view --ignore-standalone-config --last-modified-date --timezone UTC+08 --find-previous-authors --analyze-authorship --originality-threshold 0.66")])]),_v(" "),_c('p',[_v("Same command as above but using most parameters in alias format:"),_c('br'),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar -r https://github.com/reposense/RepoSense.git -o ./report_folder -s 31/1/2017 -u 31/12/2018 -f java adoc xml -v -i -l -t UTC+08 -F -A -ot 0.66")])])]),_v(" "),_c('p',[_v("The section below provides explanations for each of the flags.")]),_v(" "),_c('h3',{attrs:{"id":"analyze-authorship-a-4"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--analyze-authorship")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-A")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#analyze-authorship-a-4","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--analyze-authorship")])]),_v(": Performs further analysis to distinguish between partial and full credit attribution for\nlines of code assigned to the author.")]),_v(" "),_c('ul',[_c('li',[_v("Default: this feature is turned "),_c('em',[_c('strong',[_v("off")])]),_v(" by default and the author will receive partial credits for all lines of\ncode, as the code lines are at least partial credit but may not qualify for full credit.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-A")]),_v(" (upper case)")]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--analyze-authorship")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-A")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("A darker background colour represents full credit, while a lighter background colour represents partial credit.")]),_v(" "),_c('p',[_v("If the code is attributed to a different author by the user via "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("@@author")]),_v(" tag, then the new author will be given\npartial credit.")])]),_v(" "),_c('h3',{attrs:{"id":"assets-a-4"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--assets")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-a")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#assets-a-4","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{attrs:{"id":"section-assets"}},[_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--assets ASSETS_DIRECTORY")])]),_v(": Specifies where to place assets for report generation.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ASSETS_DIRECTORY")]),_v(" The directory containing the assets files. A "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("favicon.ico")]),_v(" file can be placed here to customize the favicon of the dashboard, while a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("title.md")]),_v(" file can be placed to customize the "),_c('a',{attrs:{"href":"https://reposense.org/ug/customizingReports.html#add-a-title"}},[_v("title")]),_v(" of the report using "),_c('a',{attrs:{"href":"https://www.markdownguide.org/basic-syntax/"}},[_v("Markdown syntax")]),_v(".")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-a")])]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--assets ./assets")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-a ./assets")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("If "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--assets")]),_v(" is not specified, RepoSense looks for assets in the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./assets")]),_v(" directory.")])])])],1),_v(" "),_c('h3',{attrs:{"id":"config-c-4"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--config")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-c")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#config-c-4","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{attrs:{"id":"section-config"}},[_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--config CONFIG_DIRECTORY")])]),_v(": Specifies that config files located in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("CONFIG_DIRECTORY")]),_v(" should be used to customize the report.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("CONFIG_DIRECTORY")]),_v(" The directory containing the config files. Should contain a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(" file. Optionally, can contain an "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(" file or/and a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("group-config.csv")]),_v(" file or/and a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("report-config.json")]),_v(" file or/and a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("blurbs.md")]),_v(" file.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-c")])]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar --config ./config")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("Cannot be used with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repos")]),_v(". The "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repos")]),_v(" flag will take precedence over this flag.")]),_v(" "),_c('li',[_v("If both "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repos")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--config")]),_v(" are not specified, RepoSense looks for config files in the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./config")]),_v(" directory.")]),_v(" "),_c('li',[_v("Config files must follow "),_c('a',{attrs:{"href":"/RepoSense/ug/configFiles.html"}},[_v("this")]),_v(" format.")])])])],1),_v(" "),_c('h3',{attrs:{"id":"formats-f-4"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--formats")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-f")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#formats-f-4","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--formats LIST_OF_FORMATS")])]),_v(": Specifies which file extensions to be included in the analysis.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("LIST_OF_FORMATS")]),_v(" A space-separated list of file extensions that should be included in the analysis."),_c('br'),_v("\nDefault: all file formats")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-f")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--formats css fxml gradle")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-f css fxml gradle")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Binary file formats, such as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("jpg")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("png")]),_v(","),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("exe")]),_v(","),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("zip")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("rar")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("docx")]),_v(", and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("pptx")]),_v(", all will be labelled as the file type "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("binary")]),_v(" in the generated report.")])]),_v(" "),_c('h3',{attrs:{"id":"find-previous-authors-f-4"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--find-previous-authors")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-F")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#find-previous-authors-f-4","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--find-previous-authors")])]),_v(": Utilizes Git blame's ignore revisions functionality, RepoSense will attempt to blame the line changes caused by commits in the ignore commit list to the previous authors who altered those lines (if available).")]),_v(" "),_c('ul',[_c('li',[_v("Default: RepoSense will assume that no authors are responsible for the code changes in the lines altered by commits in the ignore commit list.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-F")]),_v(" (uppercase F)")]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--find-previous-authors")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-F")])])]),_v(" "),_c('h3',{attrs:{"id":"help-h-4"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--help")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-h")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#help-h-4","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--help")])]),_v(": Shows the help message.")]),_v(" "),_c('ul',[_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-h")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Cannot be used with any other flags. This flag takes precedence over all other flags.")])]),_v(" "),_c('h3',{attrs:{"id":"ignore-standalone-config-i-4"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--ignore-standalone-config")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-i")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#ignore-standalone-config-i-4","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--ignore-standalone-config")])]),_v(": Specifies that the standalone config file in the repo should be ignored.")]),_v(" "),_c('ul',[_c('li',[_v("Default: the standalone config file is not ignored")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-i")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--ignore-standalone-config")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-i")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("This flag overrides the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Ignore standalone config")]),_v(" field in the CSV config file.")])]),_v(" "),_c('h3',{attrs:{"id":"ignore-filesize-limit-i-4"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--ignore-filesize-limit")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-I")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#ignore-filesize-limit-i-4","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--ignore-filesize-limit")])]),_v(": Specifies that the file size limit (both default and user-defined) should be ignored during the analysis.")]),_v(" "),_c('ul',[_c('li',[_v("Default: the file size limit is not ignored")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-I")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--ignore-filesize-limit")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-I")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("All files are subject to a default file size limit or a custom size limit set by the user. Most files should not be\naffected by the default size limit. This flag can be useful for including files in your report that are affected by\nthe size limit. Note that this flag may result in large report sizes and/or slower report generation.")])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("This flag overrides the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Ignore file size limit")]),_v(" field in the CSV config file.")])]),_v(" "),_c('h3',{attrs:{"id":"last-modified-date-l-4"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--last-modified-date")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-l")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#last-modified-date-l-4","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--last-modified-date")])]),_v(": Specifies that the last modified date of each line of code should be added to "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("authorship.json")]),_v(".")]),_v(" "),_c('ul',[_c('li',[_v("Default: the last modified date of each line of code will not be added to "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("authorship.json")])]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-l")]),_v(" (lowercase L)")]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--last-modified-date")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-l")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("Cannot be used with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--shallow-cloning")]),_v(". This may result in an incorrect last modified date.")]),_v(" "),_c('li',[_v("The last modified dates will be in the same timezone specified with the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--timezone")]),_v(" flag.")])])]),_v(" "),_c('h3',{attrs:{"id":"originality-threshold-ot-4"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--originality-threshold")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-ot")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#originality-threshold-ot-4","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--originality-threshold [VALUE]")])]),_v(": Specifies the cut-off point for partial and full credit\nin "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--analyze-authorship")]),_v(". Author will be given full credit if their contribution exceeds this threshold, else partial\ncredit is given.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("VALUE")]),_v(" Optional. Acceptable range: [0.0, 1.0]."),_c('br'),_v("\nDefault: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("0.51")])]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-ot")])]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--originality-threshold 0.66")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-ot 0.66")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("Requires "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--analyze-authorship")]),_v(" flag.")]),_v(" "),_c('li',[_v("An author's contribution, or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("originality score")]),_v(", is calculated using Levenshtein Distance (Edit Distance) algorithm.\nWe compare the difference between current code line and its previous versions.")])])]),_v(" "),_c('h3',{attrs:{"id":"output-o-4"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--output")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-o")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#output-o-4","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--output OUTPUT_DIRECTORY")])]),_v(": Indicates where to save the report generated.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("OUTPUT_DIRECTORY")]),_v(" The location for the generated "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("reposense-report")]),_v(" folder."),_c('br'),_v("\nDefault: current directory")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-o")])]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--output ./foo")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-o ./foo")]),_v(" (the report will be in the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./foo/reposense-report")]),_v(" folder)")])]),_v(" "),_c('h3',{attrs:{"id":"period-p-4"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--period")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-p")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#period-p-4","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--period PERIOD")])]),_v(": Specifies the period of analysis window.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("PERIOD")]),_v(" The period of analysis window, in the format "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("nd")]),_v(" (for n days) or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("nw")]),_v(" (for n weeks). It is used to calculate end date if only start date is specified, or calculate end date if only start date is specified.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-p")])]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--period 30d")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--period 4w")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("If both start date and end date are not specified, the date of generating the report will be taken as the end date.")]),_v(" "),_c('li',[_v("May analyze the incorrect date range if used with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since d1")]),_v(". The program will throw a warning.")]),_v(" "),_c('li',[_v("Cannot be used with both "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--until")]),_v(". The program will throw an exception.")])])]),_v(" "),_c('h3',{attrs:{"id":"repo-repos-r-4"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repo")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repos")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-r")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#repo-repos-r-4","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repo REPO_LOCATION")])]),_v(": Specifies which repositories to analyze.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("REPO_LOCATION")]),_v(" A list of URLs or the disk location of the git repositories to analyze, separated by spaces.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-r")])]),_v(" "),_c('li',[_v("Examples:\n"),_c('ul',[_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repos https://github.com/reposense/RepoSense.git")])]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repo https://github.com/reposense/RepoSense.git c:/myRepose/foo/bar")]),_v(": analyzes the two specified repos (one remote, one local) and generates one report containing details of both.")])])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Cannot be used with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--config")]),_v(". This flag takes precedence over "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--config")]),_v(".")])]),_v(" "),_c('h3',{attrs:{"id":"shallow-cloning-s-4"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--shallow-cloning")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-S")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#shallow-cloning-s-4","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--shallow-cloning")])]),_v(": Clones repositories using Git's shallow cloning functionality, which can significantly reduce the time taken to clone large repositories. However, the flag should not be used for smaller repositories where the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(".git")]),_v(" file is smaller than 500 MB, as it would create overhead.")]),_v(" "),_c('ul',[_c('li',[_v("Default: RepoSense does not clone repositories using Git's shallow cloning functionality.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-S")]),_v(" (uppercase S)")]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--shallow-cloning")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-S")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Cannot be used with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--last-modified-date")]),_v(". This may result in an incorrect last modified date.")])]),_v(" "),_c('h3',{attrs:{"id":"since-s-4"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-s")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#since-s-4","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since START_DATE")])]),_v(": Specifies the start date for the period to be analyzed.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("START_DATE")]),_v(" The first day of the period to be analyzed, in the format "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("DD/MM/YYYY")]),_v("."),_c('br'),_v("\nDefault: one month before the current date")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-s")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since 21/10/2017")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-s 21/10/2017")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("If the start date is not specified, only commits made one month before the end date (if specified) or the date of generating the report, will be captured and analyzed.")]),_v(" "),_c('li',[_v("If "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("d1")]),_v(" is specified as the start date ("),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since d1")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-s d1")]),_v("), then the program will search for the earliest commit date of all repositories and use that as the start date.")]),_v(" "),_c('li',[_v("If "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("d1")]),_v(" is specified together with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--period")]),_v(", then the program will warn that the date range being analyzed may be incorrect.")])])]),_v(" "),_c('h3',{attrs:{"id":"timezone-t-4"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--timezone")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-t")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#timezone-t-4","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--timezone ZONE_ID")])]),_v(": Indicates the timezone to be used for the analysis.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ZONE_ID")]),_v(" The timezone in the format "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ZONE_ID[±hh[mm]]")]),_v("."),_c('br'),_v("\nDefault: system's default timezone")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-t")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--timezone UTC+08")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-t UTC-1030")])])]),_v(" "),_c('h3',{attrs:{"id":"until-u-4"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--until")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-u")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#until-u-4","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--until END_DATE")])]),_v(": Specifies the end date of the analysis period.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("END_DATE")]),_v(" The last date of the period to be analyzed, in the format "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("DD/MM/YYYY")]),_v("."),_c('br'),_v("\nDefault: current date")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-u")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--until 21/10/2017")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-u 21/10/2017")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Note: If the end date is not specified, the date of generating the report will be taken as the end date.")])]),_v(" "),_c('h3',{attrs:{"id":"version-v-4"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--version")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-V")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#version-v-4","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--version")])]),_v(": Shows the version of RepoSense.")]),_v(" "),_c('ul',[_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-V")]),_v(" (upper case)")])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Cannot be used with any other flags. This flag takes precedence over all other flags other than "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--help")]),_v(".")])]),_v(" "),_c('h3',{attrs:{"id":"view-v-4"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--view")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-v")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#view-v-4","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--view [REPORT_FOLDER]")])]),_v(": Specifies that the report should be opened in the default browser.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("REPORT_FOLDER")]),_v(" Optional. If specified, no analysis will be performed and the report specified by the argument will be opened."),_c('br'),_v("\nDefault: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./reposense-report")])]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-v")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--view")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-v")])])])],1)])],1),_v(" "),_c('p'),_v(" "),_c('h3',{attrs:{"id":"specifying-which-version-of-reposense-to-use-3"}},[_v("Specifying which version of RepoSense to use"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#specifying-which-version-of-reposense-to-use-3","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Depending on which version you wish to use for report generation, add one of the following flags to the line "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./get-reposense.py")]),_v(" in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("run.sh")]),_v(" (e.g., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./get-reposense.py --release")]),_v("):")]),_v(" "),_c('ul',[_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--release")]),_v(": Use the latest release (Stable)")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--master")]),_v(": Use the latest version of the master branch")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--tag TAG")]),_v(" (e.g. "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--tag v1.6.1")]),_v("): Use the version identified by the Git tag given")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--commit COMMIT")]),_v(" (e.g. "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--commit abc123")]),_v("): Use the version identified by the Git commit SHA given")])])])])],1),_v(" "),_c('p'),_v(" "),_c('div',{staticClass:"indented-level0"},[_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('span',[_c('span',{staticClass:"glyphicon glyphicon-log-in",attrs:{"aria-hidden":"true"}})]),_v(" Appendix: "),_c('strong',[_v("Config files format")])])]},proxy:true}])},[_v(" "),_c('div',[_c('h1',{staticClass:"display-4",attrs:{"id":"appendix-config-files-format-3"}},[_c('span',[_v("Appendix: Config files format")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#appendix-config-files-format-3","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{staticClass:"lead"},[_c('p',[_v("Given below are the details of the various config files used by RepoSense.")])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_c('strong',[_v("RepoSense ignores the order of column headers in the CSV config files. However, the spelling of the column headers must match the specified headers exactly, or the column would be ignored by RepoSense.")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_c('strong',[_v("A value in a config file is optional to provide unless it is specified as "),_c('span',{staticClass:"badge bg-danger"},[_v("mandatory")])]),_v(".")])]),_v(" "),_c('h2',{attrs:{"id":"repo-config-csv-3"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#repo-config-csv-3","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(" file contains repo-level config data.")]),_v(" Each row represents a repository's configuration ("),_c('a',{attrs:{"href":"/RepoSense/ug/repo-config.csv"}},[_v("example")]),_v(").")]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Column Name")]),_v(" "),_c('th',[_v("Explanation")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_v("Repository's Location "),_c('span',{staticClass:"badge bg-danger"},[_v("mandatory")])]),_v(" "),_c('td',[_v("The "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Remote Repo URL")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Disk Path")]),_v(" to the git repository e.g., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://github.com/foo/bar.git")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("C:\\Users\\user\\Desktop\\GitHub\\foo\\bar")])])]),_v(" "),_c('tr',[_c('td',[_v("Branch")]),_v(" "),_c('td',[_v("The branch to analyze in the target repository e.g., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("master")]),_v(". Default: the default branch of the repo")])]),_v(" "),_c('tr',[_c('td',[_v("File formats"),_c('sup',[_v("*+")])]),_v(" "),_c('td',[_v("The file extensions to analyze. Binary file formats, such as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("png")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("jpg")]),_v(", will be automatically labelled as the file type "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("binary")]),_v(" in the generated report. Default: all file formats")])]),_v(" "),_c('tr',[_c('td',[_v("Find Previous Authors")]),_v(" "),_c('td',[_v("Enter "),_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("yes")])]),_v(" to utilize Git blame's ignore revisions functionality, RepoSense will attempt to blame the line changes caused by commits in the ignore commit list to the previous authors who altered those lines (if available).")])]),_v(" "),_c('tr',[_c('td',[_v("Ignore Glob List"),_c('sup',[_v("*+")])]),_v(" "),_c('td',[_v("The list of file path globs to ignore during analysis for each author e.g., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("test/**;temp/**")]),_v(". Refer to the "),_c('a',{attrs:{"href":"https://docs.oracle.com/javase/tutorial/essential/io/fileOps.html#glob"}},[_c('em',[_v("glob format")])]),_v(" for the path glob syntax.")])]),_v(" "),_c('tr',[_c('td',[_v("Ignore standalone config")]),_v(" "),_c('td',[_v("To ignore the standalone config file (if any) in target repository, enter "),_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("yes")])]),_v(". If the cell is empty, the standalone config file in the repo (if any) will take precedence over configurations provided in the csv files.")])]),_v(" "),_c('tr',[_c('td',[_v("Ignore Commits List"),_c('sup',[_v("*+")])]),_v(" "),_c('td',[_v("The list of commits to ignore during analysis. For accurate results, the commits should be provided with their full hash. Additionally, a range of commits can be specified using the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("..")]),_v(" notation e.g. "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("abc123..def456")]),_v(" (both inclusive).")])]),_v(" "),_c('tr',[_c('td',[_v("Ignore Authors List"),_c('sup',[_v("*+")])]),_v(" "),_c('td',[_v("The list of authors to ignore during analysis. Authors should be specified by their "),_c('a',{attrs:{"href":"#a-note-about-git-author-name"}},[_v("Git Author Name")]),_v(".")])]),_v(" "),_c('tr',[_c('td',[_v("Shallow Cloning")]),_v(" "),_c('td',[_v("Enter "),_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("yes")])]),_v(" to clone the repository using Git's shallow cloning functionality. This option can significantly reduce the time taken to clone large repositories. However, the option should ideally be disabled for smaller repositories where the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(".git")]),_v(" file is smaller than 500 MB, as it would create overhead.")])]),_v(" "),_c('tr',[_c('td',[_v("File Size Limit"),_c('sup',[_v("+")])]),_v(" "),_c('td',[_v("Enter a file size limit for the repository in bytes as a single number without units (for a size limit of 1MB for example, enter 1000000). This file size limit will override the default file size limit (500KB). Files exceeding the file size limit will be marked as ignored and only the file name and line count will be reflected in the report.")])]),_v(" "),_c('tr',[_c('td',[_v("Ignore File Size Limit")]),_v(" "),_c('td',[_v("Enter "),_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("yes")])]),_v(" to ignore both the default file size limit and the file size limit possibly set by the user in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(".")])]),_v(" "),_c('tr',[_c('td',[_v("Skip Ignored File Analysis")]),_v(" "),_c('td',[_v("Enter "),_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("yes")])]),_v(" to ignore analysis of files exceeding the file size limit entirely. If file analysis is skipped, all information about the file will be omitted from the generated report. This option can significantly improve report generation time.")])])])])]),_c('box',{attrs:{"type":"info","seamless":""}},[_v("\nThe Shallow Cloning option is incompatible with the \"--last-modified-date\" CLI flag.\n")]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_v("\nIf Ignore File Size Limit is yes, the File Size Limit and Skip Ignored File Analysis columns are ignored.\n")]),_v(" "),_c('p',[_c('sup',[_v("* "),_c('strong',[_v("Multi-value column")]),_v(": multiple values can be entered in this column using a semicolon "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(";")]),_v(" as the separator.")]),_c('br'),_v(" "),_c('sup',[_v("+ "),_c('strong',[_v("Overrideable column")]),_v(": prepend with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("override:")]),_v(" to use entered value(s) instead of value(s) from standalone config.")])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("When using "),_c('a',{attrs:{"href":"#config-json-standalone-config-file"}},[_v("standalone config")]),_v(" (if it is not ignored), it is possible to override specific values from the standalone config by prepending the entered value with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("override:")]),_v(".")])]),_v(" "),_c('h2',{attrs:{"id":"author-config-csv-3"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#author-config-csv-3","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Optionally, you can use an "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(" (which should be in the same directory as the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(" file) to provide more details about the authors to analyze ("),_c('a',{attrs:{"href":"/RepoSense/ug/author-config.csv"}},[_v("example")]),_v("). It should contain the following columns:")]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Column Name")]),_v(" "),_c('th',[_v("Explanation")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_v("Repository's Location"),_c('sup',[_v("*")])]),_v(" "),_c('td',[_v("Same as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(". Default: all the repos in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(".")])]),_v(" "),_c('tr',[_c('td',[_v("Branch")]),_v(" "),_c('td',[_v("The branch to analyze for this author, e.g., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("master")]),_v(". Default: the author will be bound to all the repos in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(" that has the same repo's location, regardless of branch.")])]),_v(" "),_c('tr',[_c('td',[_v("Author's Git Host ID"),_c('sup',[_v("#")]),_v(" "),_c('span',{staticClass:"badge bg-danger"},[_v("mandatory")])]),_v(" "),_c('td',[_v("Username of the target author's profile on GitHub, GitLab or Bitbucket, e.g."),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("JohnDoe")]),_v(".")])]),_v(" "),_c('tr',[_c('td',[_v("Author's Emails"),_c('sup',[_v("*")])]),_v(" "),_c('td',[_v("Associated emails of the author. For GitHub users, this can be found in your "),_c('a',{attrs:{"href":"https://github.com/settings/emails"}},[_v("GitHub settings")]),_v(".")])]),_v(" "),_c('tr',[_c('td',[_v("Author's Display Name")]),_v(" "),_c('td',[_v("The name to display for the author. Default: author's username.")])]),_v(" "),_c('tr',[_c('td',[_v("Author's Git Author Name"),_c('sup',[_v("*")])]),_v(" "),_c('td',[_v("The meaning of "),_c('em',[_v("Git Author Name")]),_v(" is explained in "),_c('a',{attrs:{"href":"#a-note-about-git-author-name"}},[_c('em',[_v("A note about git author name")])]),_v(".")])]),_v(" "),_c('tr',[_c('td',[_v("Ignore Glob List"),_c('sup',[_v("*")])]),_v(" "),_c('td',[_v("Files to ignore for this author, in addition to files ignored by the patterns specified in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(". The path glob syntax is the same as that of Ignore Glob List in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(".")])])])])]),_c('p',[_c('sup',[_v("* "),_c('strong',[_v("Multi-value column")]),_v(": multiple values can be entered in this column using a semicolon "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(";")]),_v(" as the separator.")]),_v(" "),_c('br'),_v(" "),_c('sup',[_v("# For backward compatibility, "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Author's GitHub ID")]),_v(" is still accepted as the header in place of "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Author's Git Host ID")]),_v(".")])]),_v(" "),_c('p',[_v("If "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(" is not given and the repo has not provided author details in a standalone config file, all the authors of the repositories within the date range specified (if any) will be analyzed.")]),_v(" "),_c('p',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(" has some advanced syntax that can help to reduce duplication of the author's information. The syntax guide is given below:")]),_v(" "),_c('div',{staticClass:"indented-level0"},[_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('span',[_c('span',{staticClass:"glyphicon glyphicon-log-in",attrs:{"aria-hidden":"true"}})]),_v(" Appendix: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(" advanced syntax")])]},proxy:true}])},[_v(" "),_c('div',[_c('h1',{staticClass:"display-4",attrs:{"id":"appendix-author-config-csv-advanced-syntax-3"}},[_c('span',[_v("Appendix: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(" advanced syntax")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#appendix-author-config-csv-advanced-syntax-3","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{staticClass:"lead"},[_c('p',[_v("Given below are the advanced syntax available for "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(".")])]),_v(" "),_c('h2',{attrs:{"id":"multiple-repository-s-location-per-author-3"}},[_v("Multiple "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repository's Location")]),_v(" per author"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#multiple-repository-s-location-per-author-3","onclick":"event.stopPropagation()"}})]),_v(" "),_c('h4',{attrs:{"id":"specifying-multiple-repository-s-location-3"}},[_v("Specifying multiple "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repository's Location")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#specifying-multiple-repository-s-location-3","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("To specify multiple "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repository's Location")]),_v(" in a single row, we can use a semicolon "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(";")]),_v(" as a separator.")]),_v(" "),_c('p',[_v("Below is an example:")]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Repository's Location")]),_v(" "),_c('th',[_v("Branch")]),_v(" "),_c('th',[_v("Author's Git Host ID")]),_v(" "),_c('th',[_v("... Hidden columns")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://github.com/reposense/RepoSense.git;https://github.com/MarkBind/markbind.git")])]),_v(" "),_c('td',[_v("master")]),_v(" "),_c('td',[_v("sikai00")]),_v(" "),_c('td',[_v("--")])])])])]),_c('p',[_v("We have now furnished author details for both repositories in a single row, instead of having two individual rows per "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repository's Location")]),_v(".")]),_v(" "),_c('br'),_v(" "),_c('h4',{attrs:{"id":"specifying-repository-s-location-with-one-or-more-specific-branches-3"}},[_v("Specifying "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repository's Location")]),_v(" with one or more specific branches"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#specifying-repository-s-location-with-one-or-more-specific-branches-3","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("To list out one or more branches for a particular "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repository's Location")]),_v(", we can use a pipe "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("|")]),_v(" separator to demarcate the different branches.")]),_v(" "),_c('p',[_v("Below is an example:")]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Repository's Location")]),_v(" "),_c('th',[_v("Branch")]),_v(" "),_c('th',[_v("Author's Git Host ID")]),_v(" "),_c('th',[_v("... Hidden columns")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://github.com/reposense/RepoSense.git~master|release|cypress")])]),_v(" "),_c('td',[_v("master")]),_v(" "),_c('td',[_v("sikai00")]),_v(" "),_c('td',[_v("--")])])])])]),_c('p',[_v("We have now provided author details for three different branches in a single repo, using a single row.")]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("The branch specified through the delimiter syntax will take precedence over the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Branch")]),_v(" column.")])]),_v(" "),_c('h2',{attrs:{"id":"using-github-branch-url-as-repository-s-location-3"}},[_v("Using GitHub branch URL as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repository's Location")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#using-github-branch-url-as-repository-s-location-3","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("We can also use GitHub branch URL as copied from the address bar directly, to be able to quickly use the URL to specify the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repository's Location")]),_v(" and a specific "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Branch")]),_v(" at the same time.")]),_v(" "),_c('p',[_v("Below is an example:")]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Repository's Location")]),_v(" "),_c('th',[_v("Branch")]),_v(" "),_c('th',[_v("Author's Git Host ID")]),_v(" "),_c('th',[_v("... Hidden columns")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://github.com/reposense/RepoSense/tree/release")])]),_v(" "),_c('td'),_v(" "),_c('td',[_v("sikai00")]),_v(" "),_c('td',[_v("--")])])])])]),_c('p',[_v("There is no need to specify the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Branch")]),_v(" column now, as we have specified it through the GitHub branch URL.")]),_v(" "),_c('box',{attrs:{"type":"warning","seamless":""}},[_c('p',[_v("GitLab and BitBucket branch URL are not supported at the moment.")])]),_v(" "),_c('h2',{attrs:{"id":"combining-the-advanced-syntax-3"}},[_v("Combining the advanced syntax"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#combining-the-advanced-syntax-3","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("It is possible to combine the above-mentioned advanced syntax. By doing so, we can go from:")]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Repository's Location")]),_v(" "),_c('th',[_v("Branch")]),_v(" "),_c('th',[_v("Author's Git Host ID")]),_v(" "),_c('th',[_v("... Hidden columns")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://github.com/MarkBind/markbind/tree/vue3-migration")])]),_v(" "),_c('td'),_v(" "),_c('td',[_v("sikai00")]),_v(" "),_c('td',[_v("--")])]),_v(" "),_c('tr',[_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://github.com/reposense/RepoSense.git")])]),_v(" "),_c('td',[_v("master")]),_v(" "),_c('td',[_v("sikai00")]),_v(" "),_c('td',[_v("--")])]),_v(" "),_c('tr',[_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://github.com/reposense/RepoSense.git")])]),_v(" "),_c('td',[_v("cypress")]),_v(" "),_c('td',[_v("sikai00")]),_v(" "),_c('td',[_v("--")])])])])]),_c('p',[_v("to:")]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Repository's Location")]),_v(" "),_c('th',[_v("Branch")]),_v(" "),_c('th',[_v("Author's Git Host ID")]),_v(" "),_c('th',[_v("... Hidden columns")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://github.com/MarkBind/markbind/tree/vue3-migration;https://github.com/reposense/RepoSense.git~master|cypress")])]),_v(" "),_c('td'),_v(" "),_c('td',[_v("sikai00")]),_v(" "),_c('td',[_v("--")])])])])]),_c('br')],1)])],1),_v(" "),_c('p'),_v(" "),_c('h2',{attrs:{"id":"group-config-csv-3"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("group-config.csv")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#group-config-csv-3","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Optionally, you can provide a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("group-config.csv")]),_v("(which should be in the same directory as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(" file) to provide details on any custom groupings for files in specified repositories ("),_c('a',{attrs:{"href":"/RepoSense/ug/group-config.csv"}},[_v("example")]),_v("). It should contain the following columns:")]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Column Name")]),_v(" "),_c('th',[_v("Explanation")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_v("Repository's Location")]),_v(" "),_c('td',[_v("Same as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(". Default: all the repos in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")])])]),_v(" "),_c('tr',[_c('td',[_v("Group Name "),_c('span',{staticClass:"badge bg-danger"},[_v("mandatory")])]),_v(" "),_c('td',[_v("Name of the group, e.g.,"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("test")]),_v(".")])]),_v(" "),_c('tr',[_c('td',[_v("Globs * "),_c('span',{staticClass:"badge bg-danger"},[_v("mandatory")])]),_v(" "),_c('td',[_v("The list of file path globs to include for specified group, e.g.,"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("**/test/*;**.java")]),_v(".")])])])])]),_c('p',[_c('sup',[_v("* "),_c('strong',[_v("Multi-value column")]),_v(": multiple values can be entered in this column using a semicolon "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(";")]),_v(" as the separator.")])]),_v(" "),_c('p',[_v("Note that a file in a given repository should only be tagged to one group. "),_c('br'),_v("\ne.g.: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("example.java")]),_v(" in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("example-repo")]),_v(" can either be in the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("test")]),_v(" group or the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("code")]),_v(" group, but not in both "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("test")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("code")]),_v(" group. If multiple groups are specified for a given file, the latter group (i.e., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("code")]),_v(" group) is set for the file.")]),_v(" "),_c('h2',{attrs:{"id":"report-config-json-3"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("report-config.json")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#report-config-json-3","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("You can optionally use "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("report-config.json")]),_v(" to customize report generation by providing the following information. ("),_c('a',{attrs:{"href":"/RepoSense/ug/report-config.json"}},[_v("example")]),_v(")")]),_v(" "),_c('p',[_c('strong',[_v("Fields to provide")]),_v(":")]),_v(" "),_c('ul',[_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("title")]),_v(": Title of the generated report, which is also the title of the deployed dashboard. Default: \"RepoSense Report\"")])]),_v(" "),_c('div',{attrs:{"id":"section-standalone"}},[_c('h2',{attrs:{"id":"config-json-standalone-config-file-4"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("config.json")]),_v(" (standalone config file)"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#config-json-standalone-config-file-4","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Repo owners can provide the following additional information to RepoSense using a config file that we call the "),_c('strong',[_c('em',[_v("standalone config file")])]),_v(":")]),_v(" "),_c('ul',[_c('li',[_v("which files/authors/commits to analyze/omit")]),_v(" "),_c('li',[_v("which git and git host usernames belong to which authors")]),_v(" "),_c('li',[_v("the display of an author")])]),_v(" "),_c('p',[_v("To use this feature, add a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("_reposense/config.json")]),_v(" to the root of your repo using the format in the example below ("),_c('a',{attrs:{"href":"https://github.com/reposense/RepoSense/blob/master/_reposense/config.json"}},[_v("another example")]),_v(") and "),_c('strong',[_v("commit it")]),_v(" (reason: RepoSense can see committed code only):")]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"no-line-numbers hljs json"}},[_c('span',[_v("{\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"ignoreGlobList\"")]),_v(": ["),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"about-us/**\"")]),_v(", "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"**index.html\"")]),_v("],\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"formats\"")]),_v(": ["),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"html\"")]),_v(", "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"css\"")]),_v("],\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"ignoreCommitList\"")]),_v(": ["),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"90018e49f129ce7e0abdc8b18e91c9813588c601\"")]),_v(", "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"67890def\"")]),_v(", "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"abc123..def456\"")]),_v("],\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"ignoreAuthorList\"")]),_v(": ["),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"charlie\"")]),_v("],\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"authors\"")]),_v(":\n")]),_c('span',[_v(" [\n")]),_c('span',[_v(" {\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"gitId\"")]),_v(": "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"alice\"")]),_v(",\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"emails\"")]),_v(": ["),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"alice@example.com\"")]),_v(", "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"alicet@example.com\"")]),_v("],\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"displayName\"")]),_v(": "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"Alice T.\"")]),_v(",\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"authorNames\"")]),_v(": ["),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"AT\"")]),_v(", "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"A\"")]),_v("],\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"ignoreGlobList\"")]),_v(": ["),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"**.css\"")]),_v("]\n")]),_c('span',[_v(" },\n")]),_c('span',[_v(" {\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"gitId\"")]),_v(": "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"bob\"")]),_v("\n")]),_c('span',[_v(" }\n")]),_c('span',[_v(" ]\n")]),_c('span',[_v("}\n")])])]),_c('p',[_v("Note: all fields are optional unless specified otherwise.")]),_v(" "),_c('p',[_c('strong',[_v("Fields to provide "),_c('em',[_v("repository-level")]),_v(" info")]),_v(":")]),_v(" "),_c('ul',[_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ignoreGlobList")]),_v(": Folders/files to ignore, specified using the "),_c('a',{attrs:{"href":"https://docs.oracle.com/javase/tutorial/essential/io/fileOps.html#glob"}},[_c('em',[_v("glob format")])]),_v(".")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("formats")]),_v(": File formats to analyze. Binary file formats, such as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("png")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("jpg")]),_v(", will be automatically labelled as the file type "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("binary")]),_v(" in the generated report. Default: all file formats")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ignoreCommitList")]),_v(": The list of commits to ignore during analysis. For accurate results, the commits should be provided with their full hash. Additionally, a range of commits can be specified using the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("..")]),_v(" notation e.g. "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("abc123..def456")]),_v(" (both inclusive).")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ignoreAuthorList")]),_v(": The list of authors to ignore during analysis. Authors specified in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("authors")]),_v(" field or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(" will be also be omitted if they are in this list. Authors should be specified by their "),_c('a',{attrs:{"href":"#a-note-about-git-author-name"}},[_v("Git Author Name")]),_v(".")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("fileSizeLimit")]),_v(": A file size limit for the repository in bytes as a single number without units, that will override the default file size limit. If not specified, the default file size limit will continue to be used.")])]),_v(" "),_c('p',[_c('strong',[_v("Fields to provide "),_c('em',[_v("author-level")]),_v(" info")]),_v(":"),_c('br'),_v("\nNote: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("authors")]),_v(" field should contain "),_c('em',[_v("all")]),_v(" authors that should be captured in the analysis.")]),_v(" "),_c('ul',[_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("gitId")]),_v(": Username of the author. "),_c('span',{staticClass:"badge bg-danger"},[_v("mandatory")]),_v(" field.")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("emails")]),_v(": Associated git emails of the author. For GitHub, this can be found in your "),_c('a',{attrs:{"href":"https://github.com/settings/emails"}},[_v("GitHub settings")]),_v(".")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("displayName")]),_v(": Name to display on the report for this author.")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("authorNames")]),_v(": Git Author Name(s) used in the author's commits. By default, RepoSense assumes an author would use their remote Git Host username as the Git username too. The meaning of "),_c('em',[_v("Git Author Name")]),_v(" is explained in "),_c('a',{attrs:{"href":"#a-note-about-git-author-name"}},[_c('em',[_v("A note about git author name")])]),_v(".")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ignoreGlobList")]),_v(": "),_c('em',[_v("Additional")]),_v(" (i.e. on top of the repo-level "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ignoreGlobList")]),_v(") folders/files to ignore for a specific author. The path glob syntax is specified by the "),_c('a',{attrs:{"href":"https://docs.oracle.com/javase/tutorial/essential/io/fileOps.html#glob"}},[_c('em',[_v("glob format")])]),_v(". In the example above, the actual "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ignoreGlobList")]),_v(" for "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("alice")]),_v(" would be "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("[\"about-us/**\", \"**index.html\", \"**.css\"]")]),_v(".")])]),_v(" "),_c('p',[_v("To verify your standalone configuration is as intended, add the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("_reposense/config.json")]),_v(" to your local copy of repo and run RepoSense against it as follows:"),_c('br')]),_v(" "),_c('ul',[_c('li',[_v("Format: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar --repo LOCAL_REPO_LOCATION")]),_v(" "),_c('br')]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar --repo c:/myRepose/foo/bar")]),_c('br'),_v("\nAfter that, view the report to see if the configuration you specified in the config file is being reflected correctly in the report.")])]),_v(" "),_c('h2',{attrs:{"id":"a-note-about-git-author-name-4"}},[_v("A note about git author name"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#a-note-about-git-author-name-4","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Git Author Name")]),_v(" refers to the customizable author's display name set in the local "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(".gitconfig")]),_v(" file. For example, in the Git Log's display:")]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"no-line-numbers hljs"}},[_c('span',[_v("...\n")]),_c('span',[_v("commit cd7f610e0becbdf331d5231887d8010a689f87c7\n")]),_c('span',[_v("Author: ConfiguredAuthorName \n")]),_c('span',[_v("Date: Fri Feb 9 19:14:41 2018 +0800\n")]),_c('span',[_v("\n")]),_c('span',[_v(" Make some changes to show my new author's name\n")]),_c('span',[_v("\n")]),_c('span',[_v("commit e3f699fd4ef128eebce98d5b4e5b3bb06a512f49\n")]),_c('span',[_v("Author: ActualGitHostId \n")]),_c('span',[_v("Date: Fri Feb 9 19:13:13 2018 +0800\n")]),_c('span',[_v("\n")]),_c('span',[_v(" Initial commit\n")]),_c('span',[_v(" ...\n")])])]),_c('p',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ActualGitHostId")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ConfiguredAuthorName")]),_v(" are both "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Git Author Name")]),_v(" of the same author."),_c('br'),_v("\nTo find the author name that you are currently using for your current git repository, run the following command within your git repository:")]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"no-line-numbers hljs"}},[_c('span',[_v("git config user.name\n")])])]),_c('p',[_v("To set the author name to the value you want (e.g., to set it to your GitHub username) for your current git repository, you can use the following command ("),_c('a',{attrs:{"href":"https://www.git-tower.com/learn/git/faq/change-author-name-email"}},[_v("more info")]),_v("):")]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"no-line-numbers hljs"}},[_c('span',[_v("git config user.name \"YOUR_AUTHOR_NAME”\n")])])]),_c('p',[_v("To set the author name to use a default value you want for future git repositories, you can use the following command:")]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"no-line-numbers hljs"}},[_c('span',[_v("git config --global user.name \"YOUR_AUTHOR_NAME”\n")])])]),_c('p',[_v("RepoSense expects the Git Author Name to be the same as author's username on the Git hosting platform (GitHub, GitLab, BitBucket). If an author's "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Git Author Name")]),_v(" is different from their username on the Git hosting platform, the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Git Author Name")]),_v(" needs to be specified in the standalone config file. If the author has more than one "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Git Author Name")]),_v(", multiple values can be entered too.")]),_v(" "),_c('box',{attrs:{"type":"warning","seamless":""}},[_c('p',[_v("Note: Symbols such as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("\"")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("!")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("/")]),_v(" etc. in your author name will be omitted, which may reduce the accuracy of the analysis if 2 names in the repository are approximately similar.")])])],1),_v(" "),_c('div',{attrs:{"id":"section-blurbs"}},[_c('h2',{attrs:{"id":"blurbs-md-4"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("blurbs.md")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#blurbs-md-4","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("You can optionally use "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("blurbs.md")]),_v(" to add blurbs in Markdown syntax for repository branches. These blurbs will be seen when grouping by "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repo/Branch")]),_v(". ("),_c('a',{attrs:{"href":"https://github.com/reposense/RepoSense/blob/master/docs/ug/blurbs.md"}},[_v("example")]),_v(")")]),_v(" "),_c('p',[_c('strong',[_v("Format")]),_v(":")]),_v(" "),_c('ul',[_c('li',[_v("First line in section: Link to the repository branch.")]),_v(" "),_c('li',[_v("Second line onwards: Blurb content.")]),_v(" "),_c('li',[_v("Delimiter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("")]),_v(". Everything on the line after the delimiter will be ignored.")])])])],1)])],1),_v(" "),_c('p')]),_v(" "),_c('p',[_c('span',{staticClass:"badge bg-dark bigger-level0"},[_v("Step 4")]),_v(" "),_c('strong',[_v("View the generated report:")])]),_v(" "),_c('p',[_v("To access your regenerated RepoSense report, go to the settings of your fork in GitHub, under "),_c('strong',[_v("GitHub Pages")]),_v(" section, look for "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Your site is published at [LINK]")]),_v(". It should look something like "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://[YOUR_GITHUB_ID].github.io/publish-RepoSense")]),_v(".\n"),_c('a',{attrs:{"href":"/RepoSense/images/publishingguide-githubsetting.jpg","target":"_self"}},[_c('img',{staticClass:"img-fluid",attrs:{"src":"/RepoSense/images/publishingguide-githubsetting.jpg","alt":"GitHub Setting","title":"GitHub Setting"}})])]),_v(" "),_c('box',{attrs:{"type":"tip","seamless":""}},[_c('p',[_v("There is also a published GitHub Action ("),_c('a',{attrs:{"href":"https://github.com/marketplace/actions/reposense-action"}},[_v("reposense-action")]),_v(") that can be used to generate and publish RepoSense reports. It is especially convenient for users who wish to skip the forking and setting up of a separate repository. For more information, refer to the "),_c('a',{attrs:{"href":"https://github.com/marketplace/actions/reposense-action#usage"}},[_v("usage description")]),_v(".")])])],1),_v(" "),_c('div',{attrs:{"id":"section-updating-the-report"}},[_c('h2',{attrs:{"id":"updating-the-report"}},[_v("Updating the report"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#updating-the-report","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_v("Manual:")])]),_v(" "),_c('ul',[_c('li',[_v("You can trigger GitHub to re-generate and re-deploy the report by pushing an empty commit to your fork.")]),_v(" "),_c('li',[_v("Currently, the GitHub Actions UI does not support the manual execution of workflows.")])]),_v(" "),_c('p',[_c('strong',[_v("Automated:")]),_v(" GitHub actions can be set to run periodically.")]),_v(" "),_c('ol',[_c('li',[_v("Edit the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(".github/workflows/main.yml")]),_v(" and uncomment the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("schedule:")]),_v(" section.")]),_v(" "),_c('li',[_v("You may change the expression after "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("cron:")]),_v(" to a schedule of your choice. Read more about cron syntax "),_c('a',{attrs:{"href":"https://help.github.com/en/actions/reference/events-that-trigger-workflows#scheduled-events-schedule"}},[_v("here")]),_v(".")]),_v(" "),_c('li',[_v("Commit your changes.")])])])])])],1),_v(" "),_c('p'),_v(" "),_c('div',{staticClass:"indented-level0"},[_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('span',[_c('span',{staticClass:"glyphicon glyphicon-log-in",attrs:{"aria-hidden":"true"}})]),_v(" Appendix: "),_c('strong',[_v("Using RepoSense with Travis")])])]},proxy:true}])},[_v(" "),_c('div',[_c('h1',{staticClass:"display-4",attrs:{"id":"appendix-reposense-with-travis"}},[_c('span',[_v("Appendix: RepoSense with Travis")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#appendix-reposense-with-travis","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{attrs:{"id":"section-setting-up"}},[_c('div',{staticClass:"lead"},[_c('p',[_v("You can use the CI tool Travis to automate generating and publishing of RepoSense reports.")])]),_v(" "),_c('h2',{attrs:{"id":"setting-up-6"}},[_v("Setting up"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#setting-up-6","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{attrs:{"id":"section-fork-token"}},[_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("The instructions below assume you are using GitHub pages to host your report.")])]),_v(" "),_c('p',[_c('span',{staticClass:"badge bg-dark bigger-level0"},[_v("Step 1")]),_v(" "),_c('strong',[_v("Fork the "),_c('em',[_v("publish-RepoSense")]),_v(" repository")]),_v(" using this "),_c('a',{attrs:{"href":"https://github.com/RepoSense/publish-RepoSense/fork"}},[_v("link")]),_v(". Optionally, you can rename the fork to match your RepoSense report e.g., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("project-code-dashboard")]),_v(".")])],1),_v(" "),_c('p',[_c('span',{staticClass:"badge bg-dark bigger-level0"},[_v("Step 2")]),_v(" "),_c('strong',[_v("Generate a "),_c('em',[_v("personal access token")]),_v(" or "),_c('em',[_v("deploy key")]),_v(" on GitHub")]),_v(" as explained in the panel below.")]),_v(" "),_c('div',{staticClass:"indented-level0"},[_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('span',[_c('span',{staticClass:"glyphicon glyphicon-log-in",attrs:{"aria-hidden":"true"}})]),_v(" Granting write access on GitHub")])]},proxy:true}])},[_v(" "),_c('div',[_c('h2',{attrs:{"id":"granting-write-access-to-a-repository-2"}},[_v("Granting write-access to a repository"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#granting-write-access-to-a-repository-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("We recommend using a "),_c('a',{attrs:{"href":"https://github.blog/2013-05-16-personal-api-tokens/"}},[_v("personal access token")]),_v(" if aiming for the ease of setup and "),_c('a',{attrs:{"href":"https://developer.github.com/v3/guides/managing-deploy-keys/#deploy-keys"}},[_v("deploy key")]),_v(" if aiming for enhanced security.")]),_v(" "),_c('h3',{attrs:{"id":"if-you-wish-to-use-personal-access-token-2"}},[_v("If you wish to use "),_c('em',[_v("personal access token")]),_v(":"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#if-you-wish-to-use-personal-access-token-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('ol',[_c('li',[_c('strong',[_v("Create a "),_c('em',[_v("personal access token")])]),_v(" by following this "),_c('a',{attrs:{"href":"https://help.github.com/articles/creating-a-personal-access-token-for-the-command-line/"}},[_v("guide")]),_v(" and give only "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("public_repo")]),_v(" permission.")]),_v(" "),_c('li',[_c('strong',[_v("Copy the token")]),_v(" for later use.")])]),_v(" "),_c('h3',{attrs:{"id":"if-you-wish-to-use-deploy-key-2"}},[_v("If you wish to use "),_c('em',[_v("deploy key")]),_v(":"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#if-you-wish-to-use-deploy-key-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('box',{attrs:{"type":"info"},scopedSlots:_u([{key:"icon",fn:function(){return [_c('span',{staticClass:"fab fa-windows",attrs:{"aria-hidden":"true"}})]},proxy:true}])},[_v(" "),_c('p',[_v("[Windows users] "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ssh-keygen")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("base64")]),_v(" are accessible using "),_c('a',{attrs:{"href":"https://gitforwindows.org/"}},[_v("Git Bash")]),_v(".")])]),_v(" "),_c('ol',[_c('li',[_c('strong',[_v("Create a public-private key pair")]),_v(" (without a passphrase) using the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ssh-keygen")]),_v(". "),_c('br'),_v("\ni.e., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ssh-keygen -t ecdsa -b 521 -f id_reposense -q -N \"\"")])]),_v(" "),_c('li',[_c('strong',[_v("Create a deploy key")]),_v(" as follows:\n"),_c('ol',[_c('li',[_v("Go to the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("settings")]),_v(" page of your publish-RepoSense fork")]),_v(" "),_c('li',[_v("Click on the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Deploy keys")]),_v(" item in the navigation menu in that page")]),_v(" "),_c('li',[_v("Click on the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Add deploy key")]),_v(" button and create a new deploy key with the contents of "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("id_reposense.pub")]),_v(".")])])]),_v(" "),_c('li',[_c('strong',[_v("Copy the private key")]),_v(" in base64 encoded format for later use. "),_c('br'),_v("\ni.e., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("cat id_reposense | base64 -w 0")])])])],1)])],1),_v(" "),_c('p'),_v(" "),_c('p',[_c('span',{staticClass:"badge bg-dark bigger-level0"},[_v("Step 3")]),_v(" "),_c('strong',[_v("Login to "),_c('a',{attrs:{"href":"https://travis-ci.org/"}},[_v("Travis-CI")]),_v(".")]),_v(" You may have to sign up first.")]),_v(" "),_c('p',[_c('span',{staticClass:"badge bg-dark bigger-level0"},[_v("Step 4")]),_v(" "),_c('strong',[_v("Sync your Travis account with GitHub:")])]),_v(" "),_c('ol',[_c('li',[_v("Go to "),_c('a',{attrs:{"href":"https://travis-ci.org/account/repositories"}},[_v("your account")]),_v(".")]),_v(" "),_c('li',[_v("Click on "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Sync account")]),_v(" to fetch all your repositories into Travis-CI.")])]),_v(" "),_c('p',[_c('span',{staticClass:"badge bg-dark bigger-level0"},[_v("Step 5")]),_v(" "),_c('strong',[_v("Activate the repository:")])]),_v(" "),_c('ol',[_c('li',[_v("Go to your "),_c('a',{attrs:{"href":"https://travis-ci.org/search/publish-RepoSense/"}},[_v("publish-RepoSense fork in Travis-CI")])]),_v(" "),_c('li',[_v("Under "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Current")]),_v(" tab, click on "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Activate repository")]),_v(".")])]),_v(" "),_c('p',[_c('span',{staticClass:"badge bg-dark bigger-level0"},[_v("Step 6")]),_v(" "),_c('strong',[_v("Set the token/key:")])]),_v(" "),_c('ol',[_c('li',[_v("In the same page, click on "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("More options")]),_v(" on the right.")]),_v(" "),_c('li',[_v("Then, click on the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Settings")]),_v(" option:"),_c('br'),_v(" "),_c('a',{attrs:{"href":"/RepoSense/images/publishingguide-travissetting.jpg","target":"_self"}},[_c('img',{staticClass:"img-fluid",attrs:{"src":"/RepoSense/images/publishingguide-travissetting.jpg","alt":"Travis-CI Dashboard","title":"Travis-CI Dashboard"}})])]),_v(" "),_c('li',[_v("Under "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Environment Variables")]),_v(", name a variable as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("GITHUB_TOKEN")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("GITHUB_DEPLOY_KEY")]),_v(" depending on your earlier choice and paste the token/key into its value field; then click "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Add")]),_v(".")]),_v(" "),_c('li',[_v("Ensure that the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Display value in build log")]),_v(" is "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("switched off")]),_v(" for security reasons:"),_c('br'),_v(" "),_c('a',{attrs:{"href":"/RepoSense/images/publishingguide-githubtoken.jpg","target":"_self"}},[_c('img',{staticClass:"img-fluid",attrs:{"src":"/RepoSense/images/publishingguide-githubtoken.jpg","alt":"Travis-CI Environment Variable","title":"Travis-CI Environment Variable"}})])])]),_v(" "),_c('p',[_c('span',{staticClass:"badge bg-dark bigger-level0"},[_v("Step 7")]),_v(" "),_c('strong',[_v("Update the report configuration:")])]),_v(" "),_c('span',{attrs:{"id":"section-edit-configs"}},[_c('p',[_v("In your fork, edit "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("run.sh")]),_v(" (and if applicable, "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("group-config.csv")]),_v(") to customize the command line parameters or repositories to be analyzed.")]),_v(" "),_c('div',{staticClass:"indented-level0"},[_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('span',[_c('span',{staticClass:"glyphicon glyphicon-log-in",attrs:{"aria-hidden":"true"}})]),_v(" Appendix: "),_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("run.sh")]),_v(" format")])])]},proxy:true}])},[_v(" "),_c('div',[_c('h1',{staticClass:"display-4",attrs:{"id":"appendix-run-sh-format-4"}},[_c('span',[_v("Appendix: run.sh format")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#appendix-run-sh-format-4","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{staticClass:"lead"},[_c('p',[_c('a',{attrs:{"href":"https://github.com/reposense/publish-RepoSense/blob/master/run.sh"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("run.sh")])]),_v(" is a script used for automating RepoSense report generation.")])]),_v(" "),_c('h3',{attrs:{"id":"customizing-the-reposense-command-4"}},[_v("Customizing the RepoSense command"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#customizing-the-reposense-command-4","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("You can update the RepoSense command (i.e., the last line) in the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("run.sh")]),_v(" to match your needs.")]),_v(" "),_c('div',{staticClass:"indented-level0"},[_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('span',[_c('span',{staticClass:"glyphicon glyphicon-log-in",attrs:{"aria-hidden":"true"}})]),_v(" Appendix: "),_c('strong',[_v("CLI syntax reference")])])]},proxy:true}])},[_v(" "),_c('div',[_c('h1',{staticClass:"display-4",attrs:{"id":"appendix-cli-syntax-reference-5"}},[_c('span',[_v("Appendix: CLI syntax reference")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#appendix-cli-syntax-reference-5","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{staticClass:"lead"},[_c('p',[_v("The command "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar")]),_v(" takes several flags.")])]),_v(" "),_c('box',[_c('p',[_c('strong',[_v("Examples")]),_v(":")]),_v(" "),_c('p',[_v("An example of a command using most parameters:"),_c('br'),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar --repos https://github.com/reposense/RepoSense.git --output ./report_folder --since 31/1/2017 --until 31/12/2018 --formats java adoc xml --view --ignore-standalone-config --last-modified-date --timezone UTC+08 --find-previous-authors --analyze-authorship --originality-threshold 0.66")])]),_v(" "),_c('p',[_v("Same command as above but using most parameters in alias format:"),_c('br'),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar -r https://github.com/reposense/RepoSense.git -o ./report_folder -s 31/1/2017 -u 31/12/2018 -f java adoc xml -v -i -l -t UTC+08 -F -A -ot 0.66")])])]),_v(" "),_c('p',[_v("The section below provides explanations for each of the flags.")]),_v(" "),_c('h3',{attrs:{"id":"analyze-authorship-a-5"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--analyze-authorship")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-A")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#analyze-authorship-a-5","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--analyze-authorship")])]),_v(": Performs further analysis to distinguish between partial and full credit attribution for\nlines of code assigned to the author.")]),_v(" "),_c('ul',[_c('li',[_v("Default: this feature is turned "),_c('em',[_c('strong',[_v("off")])]),_v(" by default and the author will receive partial credits for all lines of\ncode, as the code lines are at least partial credit but may not qualify for full credit.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-A")]),_v(" (upper case)")]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--analyze-authorship")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-A")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("A darker background colour represents full credit, while a lighter background colour represents partial credit.")]),_v(" "),_c('p',[_v("If the code is attributed to a different author by the user via "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("@@author")]),_v(" tag, then the new author will be given\npartial credit.")])]),_v(" "),_c('h3',{attrs:{"id":"assets-a-5"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--assets")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-a")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#assets-a-5","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{attrs:{"id":"section-assets"}},[_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--assets ASSETS_DIRECTORY")])]),_v(": Specifies where to place assets for report generation.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ASSETS_DIRECTORY")]),_v(" The directory containing the assets files. A "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("favicon.ico")]),_v(" file can be placed here to customize the favicon of the dashboard, while a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("title.md")]),_v(" file can be placed to customize the "),_c('a',{attrs:{"href":"https://reposense.org/ug/customizingReports.html#add-a-title"}},[_v("title")]),_v(" of the report using "),_c('a',{attrs:{"href":"https://www.markdownguide.org/basic-syntax/"}},[_v("Markdown syntax")]),_v(".")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-a")])]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--assets ./assets")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-a ./assets")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("If "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--assets")]),_v(" is not specified, RepoSense looks for assets in the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./assets")]),_v(" directory.")])])])],1),_v(" "),_c('h3',{attrs:{"id":"config-c-5"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--config")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-c")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#config-c-5","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{attrs:{"id":"section-config"}},[_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--config CONFIG_DIRECTORY")])]),_v(": Specifies that config files located in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("CONFIG_DIRECTORY")]),_v(" should be used to customize the report.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("CONFIG_DIRECTORY")]),_v(" The directory containing the config files. Should contain a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(" file. Optionally, can contain an "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(" file or/and a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("group-config.csv")]),_v(" file or/and a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("report-config.json")]),_v(" file or/and a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("blurbs.md")]),_v(" file.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-c")])]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar --config ./config")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("Cannot be used with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repos")]),_v(". The "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repos")]),_v(" flag will take precedence over this flag.")]),_v(" "),_c('li',[_v("If both "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repos")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--config")]),_v(" are not specified, RepoSense looks for config files in the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./config")]),_v(" directory.")]),_v(" "),_c('li',[_v("Config files must follow "),_c('a',{attrs:{"href":"/RepoSense/ug/configFiles.html"}},[_v("this")]),_v(" format.")])])])],1),_v(" "),_c('h3',{attrs:{"id":"formats-f-5"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--formats")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-f")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#formats-f-5","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--formats LIST_OF_FORMATS")])]),_v(": Specifies which file extensions to be included in the analysis.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("LIST_OF_FORMATS")]),_v(" A space-separated list of file extensions that should be included in the analysis."),_c('br'),_v("\nDefault: all file formats")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-f")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--formats css fxml gradle")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-f css fxml gradle")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Binary file formats, such as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("jpg")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("png")]),_v(","),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("exe")]),_v(","),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("zip")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("rar")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("docx")]),_v(", and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("pptx")]),_v(", all will be labelled as the file type "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("binary")]),_v(" in the generated report.")])]),_v(" "),_c('h3',{attrs:{"id":"find-previous-authors-f-5"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--find-previous-authors")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-F")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#find-previous-authors-f-5","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--find-previous-authors")])]),_v(": Utilizes Git blame's ignore revisions functionality, RepoSense will attempt to blame the line changes caused by commits in the ignore commit list to the previous authors who altered those lines (if available).")]),_v(" "),_c('ul',[_c('li',[_v("Default: RepoSense will assume that no authors are responsible for the code changes in the lines altered by commits in the ignore commit list.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-F")]),_v(" (uppercase F)")]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--find-previous-authors")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-F")])])]),_v(" "),_c('h3',{attrs:{"id":"help-h-5"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--help")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-h")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#help-h-5","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--help")])]),_v(": Shows the help message.")]),_v(" "),_c('ul',[_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-h")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Cannot be used with any other flags. This flag takes precedence over all other flags.")])]),_v(" "),_c('h3',{attrs:{"id":"ignore-standalone-config-i-5"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--ignore-standalone-config")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-i")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#ignore-standalone-config-i-5","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--ignore-standalone-config")])]),_v(": Specifies that the standalone config file in the repo should be ignored.")]),_v(" "),_c('ul',[_c('li',[_v("Default: the standalone config file is not ignored")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-i")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--ignore-standalone-config")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-i")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("This flag overrides the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Ignore standalone config")]),_v(" field in the CSV config file.")])]),_v(" "),_c('h3',{attrs:{"id":"ignore-filesize-limit-i-5"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--ignore-filesize-limit")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-I")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#ignore-filesize-limit-i-5","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--ignore-filesize-limit")])]),_v(": Specifies that the file size limit (both default and user-defined) should be ignored during the analysis.")]),_v(" "),_c('ul',[_c('li',[_v("Default: the file size limit is not ignored")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-I")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--ignore-filesize-limit")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-I")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("All files are subject to a default file size limit or a custom size limit set by the user. Most files should not be\naffected by the default size limit. This flag can be useful for including files in your report that are affected by\nthe size limit. Note that this flag may result in large report sizes and/or slower report generation.")])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("This flag overrides the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Ignore file size limit")]),_v(" field in the CSV config file.")])]),_v(" "),_c('h3',{attrs:{"id":"last-modified-date-l-5"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--last-modified-date")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-l")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#last-modified-date-l-5","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--last-modified-date")])]),_v(": Specifies that the last modified date of each line of code should be added to "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("authorship.json")]),_v(".")]),_v(" "),_c('ul',[_c('li',[_v("Default: the last modified date of each line of code will not be added to "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("authorship.json")])]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-l")]),_v(" (lowercase L)")]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--last-modified-date")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-l")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("Cannot be used with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--shallow-cloning")]),_v(". This may result in an incorrect last modified date.")]),_v(" "),_c('li',[_v("The last modified dates will be in the same timezone specified with the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--timezone")]),_v(" flag.")])])]),_v(" "),_c('h3',{attrs:{"id":"originality-threshold-ot-5"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--originality-threshold")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-ot")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#originality-threshold-ot-5","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--originality-threshold [VALUE]")])]),_v(": Specifies the cut-off point for partial and full credit\nin "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--analyze-authorship")]),_v(". Author will be given full credit if their contribution exceeds this threshold, else partial\ncredit is given.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("VALUE")]),_v(" Optional. Acceptable range: [0.0, 1.0]."),_c('br'),_v("\nDefault: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("0.51")])]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-ot")])]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--originality-threshold 0.66")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-ot 0.66")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("Requires "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--analyze-authorship")]),_v(" flag.")]),_v(" "),_c('li',[_v("An author's contribution, or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("originality score")]),_v(", is calculated using Levenshtein Distance (Edit Distance) algorithm.\nWe compare the difference between current code line and its previous versions.")])])]),_v(" "),_c('h3',{attrs:{"id":"output-o-5"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--output")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-o")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#output-o-5","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--output OUTPUT_DIRECTORY")])]),_v(": Indicates where to save the report generated.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("OUTPUT_DIRECTORY")]),_v(" The location for the generated "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("reposense-report")]),_v(" folder."),_c('br'),_v("\nDefault: current directory")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-o")])]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--output ./foo")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-o ./foo")]),_v(" (the report will be in the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./foo/reposense-report")]),_v(" folder)")])]),_v(" "),_c('h3',{attrs:{"id":"period-p-5"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--period")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-p")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#period-p-5","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--period PERIOD")])]),_v(": Specifies the period of analysis window.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("PERIOD")]),_v(" The period of analysis window, in the format "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("nd")]),_v(" (for n days) or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("nw")]),_v(" (for n weeks). It is used to calculate end date if only start date is specified, or calculate end date if only start date is specified.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-p")])]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--period 30d")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--period 4w")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("If both start date and end date are not specified, the date of generating the report will be taken as the end date.")]),_v(" "),_c('li',[_v("May analyze the incorrect date range if used with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since d1")]),_v(". The program will throw a warning.")]),_v(" "),_c('li',[_v("Cannot be used with both "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--until")]),_v(". The program will throw an exception.")])])]),_v(" "),_c('h3',{attrs:{"id":"repo-repos-r-5"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repo")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repos")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-r")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#repo-repos-r-5","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repo REPO_LOCATION")])]),_v(": Specifies which repositories to analyze.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("REPO_LOCATION")]),_v(" A list of URLs or the disk location of the git repositories to analyze, separated by spaces.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-r")])]),_v(" "),_c('li',[_v("Examples:\n"),_c('ul',[_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repos https://github.com/reposense/RepoSense.git")])]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repo https://github.com/reposense/RepoSense.git c:/myRepose/foo/bar")]),_v(": analyzes the two specified repos (one remote, one local) and generates one report containing details of both.")])])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Cannot be used with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--config")]),_v(". This flag takes precedence over "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--config")]),_v(".")])]),_v(" "),_c('h3',{attrs:{"id":"shallow-cloning-s-5"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--shallow-cloning")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-S")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#shallow-cloning-s-5","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--shallow-cloning")])]),_v(": Clones repositories using Git's shallow cloning functionality, which can significantly reduce the time taken to clone large repositories. However, the flag should not be used for smaller repositories where the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(".git")]),_v(" file is smaller than 500 MB, as it would create overhead.")]),_v(" "),_c('ul',[_c('li',[_v("Default: RepoSense does not clone repositories using Git's shallow cloning functionality.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-S")]),_v(" (uppercase S)")]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--shallow-cloning")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-S")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Cannot be used with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--last-modified-date")]),_v(". This may result in an incorrect last modified date.")])]),_v(" "),_c('h3',{attrs:{"id":"since-s-5"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-s")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#since-s-5","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since START_DATE")])]),_v(": Specifies the start date for the period to be analyzed.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("START_DATE")]),_v(" The first day of the period to be analyzed, in the format "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("DD/MM/YYYY")]),_v("."),_c('br'),_v("\nDefault: one month before the current date")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-s")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since 21/10/2017")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-s 21/10/2017")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("If the start date is not specified, only commits made one month before the end date (if specified) or the date of generating the report, will be captured and analyzed.")]),_v(" "),_c('li',[_v("If "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("d1")]),_v(" is specified as the start date ("),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since d1")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-s d1")]),_v("), then the program will search for the earliest commit date of all repositories and use that as the start date.")]),_v(" "),_c('li',[_v("If "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("d1")]),_v(" is specified together with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--period")]),_v(", then the program will warn that the date range being analyzed may be incorrect.")])])]),_v(" "),_c('h3',{attrs:{"id":"timezone-t-5"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--timezone")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-t")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#timezone-t-5","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--timezone ZONE_ID")])]),_v(": Indicates the timezone to be used for the analysis.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ZONE_ID")]),_v(" The timezone in the format "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ZONE_ID[±hh[mm]]")]),_v("."),_c('br'),_v("\nDefault: system's default timezone")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-t")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--timezone UTC+08")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-t UTC-1030")])])]),_v(" "),_c('h3',{attrs:{"id":"until-u-5"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--until")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-u")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#until-u-5","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--until END_DATE")])]),_v(": Specifies the end date of the analysis period.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("END_DATE")]),_v(" The last date of the period to be analyzed, in the format "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("DD/MM/YYYY")]),_v("."),_c('br'),_v("\nDefault: current date")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-u")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--until 21/10/2017")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-u 21/10/2017")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Note: If the end date is not specified, the date of generating the report will be taken as the end date.")])]),_v(" "),_c('h3',{attrs:{"id":"version-v-5"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--version")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-V")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#version-v-5","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--version")])]),_v(": Shows the version of RepoSense.")]),_v(" "),_c('ul',[_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-V")]),_v(" (upper case)")])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Cannot be used with any other flags. This flag takes precedence over all other flags other than "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--help")]),_v(".")])]),_v(" "),_c('h3',{attrs:{"id":"view-v-5"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--view")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-v")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#view-v-5","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--view [REPORT_FOLDER]")])]),_v(": Specifies that the report should be opened in the default browser.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("REPORT_FOLDER")]),_v(" Optional. If specified, no analysis will be performed and the report specified by the argument will be opened."),_c('br'),_v("\nDefault: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./reposense-report")])]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-v")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--view")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-v")])])])],1)])],1),_v(" "),_c('p'),_v(" "),_c('h3',{attrs:{"id":"specifying-which-version-of-reposense-to-use-4"}},[_v("Specifying which version of RepoSense to use"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#specifying-which-version-of-reposense-to-use-4","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Depending on which version you wish to use for report generation, add one of the following flags to the line "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./get-reposense.py")]),_v(" in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("run.sh")]),_v(" (e.g., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./get-reposense.py --release")]),_v("):")]),_v(" "),_c('ul',[_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--release")]),_v(": Use the latest release (Stable)")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--master")]),_v(": Use the latest version of the master branch")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--tag TAG")]),_v(" (e.g. "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--tag v1.6.1")]),_v("): Use the version identified by the Git tag given")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--commit COMMIT")]),_v(" (e.g. "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--commit abc123")]),_v("): Use the version identified by the Git commit SHA given")])])])])],1),_v(" "),_c('p'),_v(" "),_c('div',{staticClass:"indented-level0"},[_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('span',[_c('span',{staticClass:"glyphicon glyphicon-log-in",attrs:{"aria-hidden":"true"}})]),_v(" Appendix: "),_c('strong',[_v("Config files format")])])]},proxy:true}])},[_v(" "),_c('div',[_c('h1',{staticClass:"display-4",attrs:{"id":"appendix-config-files-format-4"}},[_c('span',[_v("Appendix: Config files format")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#appendix-config-files-format-4","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{staticClass:"lead"},[_c('p',[_v("Given below are the details of the various config files used by RepoSense.")])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_c('strong',[_v("RepoSense ignores the order of column headers in the CSV config files. However, the spelling of the column headers must match the specified headers exactly, or the column would be ignored by RepoSense.")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_c('strong',[_v("A value in a config file is optional to provide unless it is specified as "),_c('span',{staticClass:"badge bg-danger"},[_v("mandatory")])]),_v(".")])]),_v(" "),_c('h2',{attrs:{"id":"repo-config-csv-4"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#repo-config-csv-4","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(" file contains repo-level config data.")]),_v(" Each row represents a repository's configuration ("),_c('a',{attrs:{"href":"/RepoSense/ug/repo-config.csv"}},[_v("example")]),_v(").")]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Column Name")]),_v(" "),_c('th',[_v("Explanation")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_v("Repository's Location "),_c('span',{staticClass:"badge bg-danger"},[_v("mandatory")])]),_v(" "),_c('td',[_v("The "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Remote Repo URL")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Disk Path")]),_v(" to the git repository e.g., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://github.com/foo/bar.git")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("C:\\Users\\user\\Desktop\\GitHub\\foo\\bar")])])]),_v(" "),_c('tr',[_c('td',[_v("Branch")]),_v(" "),_c('td',[_v("The branch to analyze in the target repository e.g., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("master")]),_v(". Default: the default branch of the repo")])]),_v(" "),_c('tr',[_c('td',[_v("File formats"),_c('sup',[_v("*+")])]),_v(" "),_c('td',[_v("The file extensions to analyze. Binary file formats, such as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("png")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("jpg")]),_v(", will be automatically labelled as the file type "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("binary")]),_v(" in the generated report. Default: all file formats")])]),_v(" "),_c('tr',[_c('td',[_v("Find Previous Authors")]),_v(" "),_c('td',[_v("Enter "),_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("yes")])]),_v(" to utilize Git blame's ignore revisions functionality, RepoSense will attempt to blame the line changes caused by commits in the ignore commit list to the previous authors who altered those lines (if available).")])]),_v(" "),_c('tr',[_c('td',[_v("Ignore Glob List"),_c('sup',[_v("*+")])]),_v(" "),_c('td',[_v("The list of file path globs to ignore during analysis for each author e.g., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("test/**;temp/**")]),_v(". Refer to the "),_c('a',{attrs:{"href":"https://docs.oracle.com/javase/tutorial/essential/io/fileOps.html#glob"}},[_c('em',[_v("glob format")])]),_v(" for the path glob syntax.")])]),_v(" "),_c('tr',[_c('td',[_v("Ignore standalone config")]),_v(" "),_c('td',[_v("To ignore the standalone config file (if any) in target repository, enter "),_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("yes")])]),_v(". If the cell is empty, the standalone config file in the repo (if any) will take precedence over configurations provided in the csv files.")])]),_v(" "),_c('tr',[_c('td',[_v("Ignore Commits List"),_c('sup',[_v("*+")])]),_v(" "),_c('td',[_v("The list of commits to ignore during analysis. For accurate results, the commits should be provided with their full hash. Additionally, a range of commits can be specified using the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("..")]),_v(" notation e.g. "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("abc123..def456")]),_v(" (both inclusive).")])]),_v(" "),_c('tr',[_c('td',[_v("Ignore Authors List"),_c('sup',[_v("*+")])]),_v(" "),_c('td',[_v("The list of authors to ignore during analysis. Authors should be specified by their "),_c('a',{attrs:{"href":"#a-note-about-git-author-name"}},[_v("Git Author Name")]),_v(".")])]),_v(" "),_c('tr',[_c('td',[_v("Shallow Cloning")]),_v(" "),_c('td',[_v("Enter "),_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("yes")])]),_v(" to clone the repository using Git's shallow cloning functionality. This option can significantly reduce the time taken to clone large repositories. However, the option should ideally be disabled for smaller repositories where the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(".git")]),_v(" file is smaller than 500 MB, as it would create overhead.")])]),_v(" "),_c('tr',[_c('td',[_v("File Size Limit"),_c('sup',[_v("+")])]),_v(" "),_c('td',[_v("Enter a file size limit for the repository in bytes as a single number without units (for a size limit of 1MB for example, enter 1000000). This file size limit will override the default file size limit (500KB). Files exceeding the file size limit will be marked as ignored and only the file name and line count will be reflected in the report.")])]),_v(" "),_c('tr',[_c('td',[_v("Ignore File Size Limit")]),_v(" "),_c('td',[_v("Enter "),_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("yes")])]),_v(" to ignore both the default file size limit and the file size limit possibly set by the user in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(".")])]),_v(" "),_c('tr',[_c('td',[_v("Skip Ignored File Analysis")]),_v(" "),_c('td',[_v("Enter "),_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("yes")])]),_v(" to ignore analysis of files exceeding the file size limit entirely. If file analysis is skipped, all information about the file will be omitted from the generated report. This option can significantly improve report generation time.")])])])])]),_c('box',{attrs:{"type":"info","seamless":""}},[_v("\nThe Shallow Cloning option is incompatible with the \"--last-modified-date\" CLI flag.\n")]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_v("\nIf Ignore File Size Limit is yes, the File Size Limit and Skip Ignored File Analysis columns are ignored.\n")]),_v(" "),_c('p',[_c('sup',[_v("* "),_c('strong',[_v("Multi-value column")]),_v(": multiple values can be entered in this column using a semicolon "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(";")]),_v(" as the separator.")]),_c('br'),_v(" "),_c('sup',[_v("+ "),_c('strong',[_v("Overrideable column")]),_v(": prepend with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("override:")]),_v(" to use entered value(s) instead of value(s) from standalone config.")])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("When using "),_c('a',{attrs:{"href":"#config-json-standalone-config-file"}},[_v("standalone config")]),_v(" (if it is not ignored), it is possible to override specific values from the standalone config by prepending the entered value with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("override:")]),_v(".")])]),_v(" "),_c('h2',{attrs:{"id":"author-config-csv-4"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#author-config-csv-4","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Optionally, you can use an "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(" (which should be in the same directory as the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(" file) to provide more details about the authors to analyze ("),_c('a',{attrs:{"href":"/RepoSense/ug/author-config.csv"}},[_v("example")]),_v("). It should contain the following columns:")]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Column Name")]),_v(" "),_c('th',[_v("Explanation")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_v("Repository's Location"),_c('sup',[_v("*")])]),_v(" "),_c('td',[_v("Same as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(". Default: all the repos in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(".")])]),_v(" "),_c('tr',[_c('td',[_v("Branch")]),_v(" "),_c('td',[_v("The branch to analyze for this author, e.g., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("master")]),_v(". Default: the author will be bound to all the repos in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(" that has the same repo's location, regardless of branch.")])]),_v(" "),_c('tr',[_c('td',[_v("Author's Git Host ID"),_c('sup',[_v("#")]),_v(" "),_c('span',{staticClass:"badge bg-danger"},[_v("mandatory")])]),_v(" "),_c('td',[_v("Username of the target author's profile on GitHub, GitLab or Bitbucket, e.g."),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("JohnDoe")]),_v(".")])]),_v(" "),_c('tr',[_c('td',[_v("Author's Emails"),_c('sup',[_v("*")])]),_v(" "),_c('td',[_v("Associated emails of the author. For GitHub users, this can be found in your "),_c('a',{attrs:{"href":"https://github.com/settings/emails"}},[_v("GitHub settings")]),_v(".")])]),_v(" "),_c('tr',[_c('td',[_v("Author's Display Name")]),_v(" "),_c('td',[_v("The name to display for the author. Default: author's username.")])]),_v(" "),_c('tr',[_c('td',[_v("Author's Git Author Name"),_c('sup',[_v("*")])]),_v(" "),_c('td',[_v("The meaning of "),_c('em',[_v("Git Author Name")]),_v(" is explained in "),_c('a',{attrs:{"href":"#a-note-about-git-author-name"}},[_c('em',[_v("A note about git author name")])]),_v(".")])]),_v(" "),_c('tr',[_c('td',[_v("Ignore Glob List"),_c('sup',[_v("*")])]),_v(" "),_c('td',[_v("Files to ignore for this author, in addition to files ignored by the patterns specified in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(". The path glob syntax is the same as that of Ignore Glob List in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(".")])])])])]),_c('p',[_c('sup',[_v("* "),_c('strong',[_v("Multi-value column")]),_v(": multiple values can be entered in this column using a semicolon "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(";")]),_v(" as the separator.")]),_v(" "),_c('br'),_v(" "),_c('sup',[_v("# For backward compatibility, "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Author's GitHub ID")]),_v(" is still accepted as the header in place of "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Author's Git Host ID")]),_v(".")])]),_v(" "),_c('p',[_v("If "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(" is not given and the repo has not provided author details in a standalone config file, all the authors of the repositories within the date range specified (if any) will be analyzed.")]),_v(" "),_c('p',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(" has some advanced syntax that can help to reduce duplication of the author's information. The syntax guide is given below:")]),_v(" "),_c('div',{staticClass:"indented-level0"},[_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('span',[_c('span',{staticClass:"glyphicon glyphicon-log-in",attrs:{"aria-hidden":"true"}})]),_v(" Appendix: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(" advanced syntax")])]},proxy:true}])},[_v(" "),_c('div',[_c('h1',{staticClass:"display-4",attrs:{"id":"appendix-author-config-csv-advanced-syntax-4"}},[_c('span',[_v("Appendix: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(" advanced syntax")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#appendix-author-config-csv-advanced-syntax-4","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{staticClass:"lead"},[_c('p',[_v("Given below are the advanced syntax available for "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(".")])]),_v(" "),_c('h2',{attrs:{"id":"multiple-repository-s-location-per-author-4"}},[_v("Multiple "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repository's Location")]),_v(" per author"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#multiple-repository-s-location-per-author-4","onclick":"event.stopPropagation()"}})]),_v(" "),_c('h4',{attrs:{"id":"specifying-multiple-repository-s-location-4"}},[_v("Specifying multiple "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repository's Location")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#specifying-multiple-repository-s-location-4","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("To specify multiple "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repository's Location")]),_v(" in a single row, we can use a semicolon "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(";")]),_v(" as a separator.")]),_v(" "),_c('p',[_v("Below is an example:")]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Repository's Location")]),_v(" "),_c('th',[_v("Branch")]),_v(" "),_c('th',[_v("Author's Git Host ID")]),_v(" "),_c('th',[_v("... Hidden columns")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://github.com/reposense/RepoSense.git;https://github.com/MarkBind/markbind.git")])]),_v(" "),_c('td',[_v("master")]),_v(" "),_c('td',[_v("sikai00")]),_v(" "),_c('td',[_v("--")])])])])]),_c('p',[_v("We have now furnished author details for both repositories in a single row, instead of having two individual rows per "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repository's Location")]),_v(".")]),_v(" "),_c('br'),_v(" "),_c('h4',{attrs:{"id":"specifying-repository-s-location-with-one-or-more-specific-branches-4"}},[_v("Specifying "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repository's Location")]),_v(" with one or more specific branches"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#specifying-repository-s-location-with-one-or-more-specific-branches-4","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("To list out one or more branches for a particular "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repository's Location")]),_v(", we can use a pipe "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("|")]),_v(" separator to demarcate the different branches.")]),_v(" "),_c('p',[_v("Below is an example:")]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Repository's Location")]),_v(" "),_c('th',[_v("Branch")]),_v(" "),_c('th',[_v("Author's Git Host ID")]),_v(" "),_c('th',[_v("... Hidden columns")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://github.com/reposense/RepoSense.git~master|release|cypress")])]),_v(" "),_c('td',[_v("master")]),_v(" "),_c('td',[_v("sikai00")]),_v(" "),_c('td',[_v("--")])])])])]),_c('p',[_v("We have now provided author details for three different branches in a single repo, using a single row.")]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("The branch specified through the delimiter syntax will take precedence over the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Branch")]),_v(" column.")])]),_v(" "),_c('h2',{attrs:{"id":"using-github-branch-url-as-repository-s-location-4"}},[_v("Using GitHub branch URL as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repository's Location")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#using-github-branch-url-as-repository-s-location-4","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("We can also use GitHub branch URL as copied from the address bar directly, to be able to quickly use the URL to specify the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repository's Location")]),_v(" and a specific "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Branch")]),_v(" at the same time.")]),_v(" "),_c('p',[_v("Below is an example:")]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Repository's Location")]),_v(" "),_c('th',[_v("Branch")]),_v(" "),_c('th',[_v("Author's Git Host ID")]),_v(" "),_c('th',[_v("... Hidden columns")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://github.com/reposense/RepoSense/tree/release")])]),_v(" "),_c('td'),_v(" "),_c('td',[_v("sikai00")]),_v(" "),_c('td',[_v("--")])])])])]),_c('p',[_v("There is no need to specify the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Branch")]),_v(" column now, as we have specified it through the GitHub branch URL.")]),_v(" "),_c('box',{attrs:{"type":"warning","seamless":""}},[_c('p',[_v("GitLab and BitBucket branch URL are not supported at the moment.")])]),_v(" "),_c('h2',{attrs:{"id":"combining-the-advanced-syntax-4"}},[_v("Combining the advanced syntax"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#combining-the-advanced-syntax-4","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("It is possible to combine the above-mentioned advanced syntax. By doing so, we can go from:")]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Repository's Location")]),_v(" "),_c('th',[_v("Branch")]),_v(" "),_c('th',[_v("Author's Git Host ID")]),_v(" "),_c('th',[_v("... Hidden columns")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://github.com/MarkBind/markbind/tree/vue3-migration")])]),_v(" "),_c('td'),_v(" "),_c('td',[_v("sikai00")]),_v(" "),_c('td',[_v("--")])]),_v(" "),_c('tr',[_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://github.com/reposense/RepoSense.git")])]),_v(" "),_c('td',[_v("master")]),_v(" "),_c('td',[_v("sikai00")]),_v(" "),_c('td',[_v("--")])]),_v(" "),_c('tr',[_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://github.com/reposense/RepoSense.git")])]),_v(" "),_c('td',[_v("cypress")]),_v(" "),_c('td',[_v("sikai00")]),_v(" "),_c('td',[_v("--")])])])])]),_c('p',[_v("to:")]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Repository's Location")]),_v(" "),_c('th',[_v("Branch")]),_v(" "),_c('th',[_v("Author's Git Host ID")]),_v(" "),_c('th',[_v("... Hidden columns")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://github.com/MarkBind/markbind/tree/vue3-migration;https://github.com/reposense/RepoSense.git~master|cypress")])]),_v(" "),_c('td'),_v(" "),_c('td',[_v("sikai00")]),_v(" "),_c('td',[_v("--")])])])])]),_c('br')],1)])],1),_v(" "),_c('p'),_v(" "),_c('h2',{attrs:{"id":"group-config-csv-4"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("group-config.csv")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#group-config-csv-4","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Optionally, you can provide a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("group-config.csv")]),_v("(which should be in the same directory as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(" file) to provide details on any custom groupings for files in specified repositories ("),_c('a',{attrs:{"href":"/RepoSense/ug/group-config.csv"}},[_v("example")]),_v("). It should contain the following columns:")]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Column Name")]),_v(" "),_c('th',[_v("Explanation")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_v("Repository's Location")]),_v(" "),_c('td',[_v("Same as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(". Default: all the repos in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")])])]),_v(" "),_c('tr',[_c('td',[_v("Group Name "),_c('span',{staticClass:"badge bg-danger"},[_v("mandatory")])]),_v(" "),_c('td',[_v("Name of the group, e.g.,"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("test")]),_v(".")])]),_v(" "),_c('tr',[_c('td',[_v("Globs * "),_c('span',{staticClass:"badge bg-danger"},[_v("mandatory")])]),_v(" "),_c('td',[_v("The list of file path globs to include for specified group, e.g.,"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("**/test/*;**.java")]),_v(".")])])])])]),_c('p',[_c('sup',[_v("* "),_c('strong',[_v("Multi-value column")]),_v(": multiple values can be entered in this column using a semicolon "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(";")]),_v(" as the separator.")])]),_v(" "),_c('p',[_v("Note that a file in a given repository should only be tagged to one group. "),_c('br'),_v("\ne.g.: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("example.java")]),_v(" in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("example-repo")]),_v(" can either be in the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("test")]),_v(" group or the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("code")]),_v(" group, but not in both "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("test")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("code")]),_v(" group. If multiple groups are specified for a given file, the latter group (i.e., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("code")]),_v(" group) is set for the file.")]),_v(" "),_c('h2',{attrs:{"id":"report-config-json-4"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("report-config.json")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#report-config-json-4","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("You can optionally use "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("report-config.json")]),_v(" to customize report generation by providing the following information. ("),_c('a',{attrs:{"href":"/RepoSense/ug/report-config.json"}},[_v("example")]),_v(")")]),_v(" "),_c('p',[_c('strong',[_v("Fields to provide")]),_v(":")]),_v(" "),_c('ul',[_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("title")]),_v(": Title of the generated report, which is also the title of the deployed dashboard. Default: \"RepoSense Report\"")])]),_v(" "),_c('div',{attrs:{"id":"section-standalone"}},[_c('h2',{attrs:{"id":"config-json-standalone-config-file-5"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("config.json")]),_v(" (standalone config file)"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#config-json-standalone-config-file-5","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Repo owners can provide the following additional information to RepoSense using a config file that we call the "),_c('strong',[_c('em',[_v("standalone config file")])]),_v(":")]),_v(" "),_c('ul',[_c('li',[_v("which files/authors/commits to analyze/omit")]),_v(" "),_c('li',[_v("which git and git host usernames belong to which authors")]),_v(" "),_c('li',[_v("the display of an author")])]),_v(" "),_c('p',[_v("To use this feature, add a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("_reposense/config.json")]),_v(" to the root of your repo using the format in the example below ("),_c('a',{attrs:{"href":"https://github.com/reposense/RepoSense/blob/master/_reposense/config.json"}},[_v("another example")]),_v(") and "),_c('strong',[_v("commit it")]),_v(" (reason: RepoSense can see committed code only):")]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"no-line-numbers hljs json"}},[_c('span',[_v("{\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"ignoreGlobList\"")]),_v(": ["),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"about-us/**\"")]),_v(", "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"**index.html\"")]),_v("],\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"formats\"")]),_v(": ["),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"html\"")]),_v(", "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"css\"")]),_v("],\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"ignoreCommitList\"")]),_v(": ["),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"90018e49f129ce7e0abdc8b18e91c9813588c601\"")]),_v(", "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"67890def\"")]),_v(", "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"abc123..def456\"")]),_v("],\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"ignoreAuthorList\"")]),_v(": ["),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"charlie\"")]),_v("],\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"authors\"")]),_v(":\n")]),_c('span',[_v(" [\n")]),_c('span',[_v(" {\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"gitId\"")]),_v(": "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"alice\"")]),_v(",\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"emails\"")]),_v(": ["),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"alice@example.com\"")]),_v(", "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"alicet@example.com\"")]),_v("],\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"displayName\"")]),_v(": "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"Alice T.\"")]),_v(",\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"authorNames\"")]),_v(": ["),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"AT\"")]),_v(", "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"A\"")]),_v("],\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"ignoreGlobList\"")]),_v(": ["),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"**.css\"")]),_v("]\n")]),_c('span',[_v(" },\n")]),_c('span',[_v(" {\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"gitId\"")]),_v(": "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"bob\"")]),_v("\n")]),_c('span',[_v(" }\n")]),_c('span',[_v(" ]\n")]),_c('span',[_v("}\n")])])]),_c('p',[_v("Note: all fields are optional unless specified otherwise.")]),_v(" "),_c('p',[_c('strong',[_v("Fields to provide "),_c('em',[_v("repository-level")]),_v(" info")]),_v(":")]),_v(" "),_c('ul',[_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ignoreGlobList")]),_v(": Folders/files to ignore, specified using the "),_c('a',{attrs:{"href":"https://docs.oracle.com/javase/tutorial/essential/io/fileOps.html#glob"}},[_c('em',[_v("glob format")])]),_v(".")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("formats")]),_v(": File formats to analyze. Binary file formats, such as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("png")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("jpg")]),_v(", will be automatically labelled as the file type "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("binary")]),_v(" in the generated report. Default: all file formats")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ignoreCommitList")]),_v(": The list of commits to ignore during analysis. For accurate results, the commits should be provided with their full hash. Additionally, a range of commits can be specified using the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("..")]),_v(" notation e.g. "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("abc123..def456")]),_v(" (both inclusive).")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ignoreAuthorList")]),_v(": The list of authors to ignore during analysis. Authors specified in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("authors")]),_v(" field or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(" will be also be omitted if they are in this list. Authors should be specified by their "),_c('a',{attrs:{"href":"#a-note-about-git-author-name"}},[_v("Git Author Name")]),_v(".")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("fileSizeLimit")]),_v(": A file size limit for the repository in bytes as a single number without units, that will override the default file size limit. If not specified, the default file size limit will continue to be used.")])]),_v(" "),_c('p',[_c('strong',[_v("Fields to provide "),_c('em',[_v("author-level")]),_v(" info")]),_v(":"),_c('br'),_v("\nNote: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("authors")]),_v(" field should contain "),_c('em',[_v("all")]),_v(" authors that should be captured in the analysis.")]),_v(" "),_c('ul',[_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("gitId")]),_v(": Username of the author. "),_c('span',{staticClass:"badge bg-danger"},[_v("mandatory")]),_v(" field.")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("emails")]),_v(": Associated git emails of the author. For GitHub, this can be found in your "),_c('a',{attrs:{"href":"https://github.com/settings/emails"}},[_v("GitHub settings")]),_v(".")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("displayName")]),_v(": Name to display on the report for this author.")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("authorNames")]),_v(": Git Author Name(s) used in the author's commits. By default, RepoSense assumes an author would use their remote Git Host username as the Git username too. The meaning of "),_c('em',[_v("Git Author Name")]),_v(" is explained in "),_c('a',{attrs:{"href":"#a-note-about-git-author-name"}},[_c('em',[_v("A note about git author name")])]),_v(".")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ignoreGlobList")]),_v(": "),_c('em',[_v("Additional")]),_v(" (i.e. on top of the repo-level "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ignoreGlobList")]),_v(") folders/files to ignore for a specific author. The path glob syntax is specified by the "),_c('a',{attrs:{"href":"https://docs.oracle.com/javase/tutorial/essential/io/fileOps.html#glob"}},[_c('em',[_v("glob format")])]),_v(". In the example above, the actual "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ignoreGlobList")]),_v(" for "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("alice")]),_v(" would be "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("[\"about-us/**\", \"**index.html\", \"**.css\"]")]),_v(".")])]),_v(" "),_c('p',[_v("To verify your standalone configuration is as intended, add the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("_reposense/config.json")]),_v(" to your local copy of repo and run RepoSense against it as follows:"),_c('br')]),_v(" "),_c('ul',[_c('li',[_v("Format: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar --repo LOCAL_REPO_LOCATION")]),_v(" "),_c('br')]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar --repo c:/myRepose/foo/bar")]),_c('br'),_v("\nAfter that, view the report to see if the configuration you specified in the config file is being reflected correctly in the report.")])]),_v(" "),_c('h2',{attrs:{"id":"a-note-about-git-author-name-5"}},[_v("A note about git author name"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#a-note-about-git-author-name-5","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Git Author Name")]),_v(" refers to the customizable author's display name set in the local "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(".gitconfig")]),_v(" file. For example, in the Git Log's display:")]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"no-line-numbers hljs"}},[_c('span',[_v("...\n")]),_c('span',[_v("commit cd7f610e0becbdf331d5231887d8010a689f87c7\n")]),_c('span',[_v("Author: ConfiguredAuthorName \n")]),_c('span',[_v("Date: Fri Feb 9 19:14:41 2018 +0800\n")]),_c('span',[_v("\n")]),_c('span',[_v(" Make some changes to show my new author's name\n")]),_c('span',[_v("\n")]),_c('span',[_v("commit e3f699fd4ef128eebce98d5b4e5b3bb06a512f49\n")]),_c('span',[_v("Author: ActualGitHostId \n")]),_c('span',[_v("Date: Fri Feb 9 19:13:13 2018 +0800\n")]),_c('span',[_v("\n")]),_c('span',[_v(" Initial commit\n")]),_c('span',[_v(" ...\n")])])]),_c('p',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ActualGitHostId")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ConfiguredAuthorName")]),_v(" are both "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Git Author Name")]),_v(" of the same author."),_c('br'),_v("\nTo find the author name that you are currently using for your current git repository, run the following command within your git repository:")]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"no-line-numbers hljs"}},[_c('span',[_v("git config user.name\n")])])]),_c('p',[_v("To set the author name to the value you want (e.g., to set it to your GitHub username) for your current git repository, you can use the following command ("),_c('a',{attrs:{"href":"https://www.git-tower.com/learn/git/faq/change-author-name-email"}},[_v("more info")]),_v("):")]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"no-line-numbers hljs"}},[_c('span',[_v("git config user.name \"YOUR_AUTHOR_NAME”\n")])])]),_c('p',[_v("To set the author name to use a default value you want for future git repositories, you can use the following command:")]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"no-line-numbers hljs"}},[_c('span',[_v("git config --global user.name \"YOUR_AUTHOR_NAME”\n")])])]),_c('p',[_v("RepoSense expects the Git Author Name to be the same as author's username on the Git hosting platform (GitHub, GitLab, BitBucket). If an author's "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Git Author Name")]),_v(" is different from their username on the Git hosting platform, the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Git Author Name")]),_v(" needs to be specified in the standalone config file. If the author has more than one "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Git Author Name")]),_v(", multiple values can be entered too.")]),_v(" "),_c('box',{attrs:{"type":"warning","seamless":""}},[_c('p',[_v("Note: Symbols such as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("\"")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("!")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("/")]),_v(" etc. in your author name will be omitted, which may reduce the accuracy of the analysis if 2 names in the repository are approximately similar.")])])],1),_v(" "),_c('div',{attrs:{"id":"section-blurbs"}},[_c('h2',{attrs:{"id":"blurbs-md-5"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("blurbs.md")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#blurbs-md-5","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("You can optionally use "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("blurbs.md")]),_v(" to add blurbs in Markdown syntax for repository branches. These blurbs will be seen when grouping by "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repo/Branch")]),_v(". ("),_c('a',{attrs:{"href":"https://github.com/reposense/RepoSense/blob/master/docs/ug/blurbs.md"}},[_v("example")]),_v(")")]),_v(" "),_c('p',[_c('strong',[_v("Format")]),_v(":")]),_v(" "),_c('ul',[_c('li',[_v("First line in section: Link to the repository branch.")]),_v(" "),_c('li',[_v("Second line onwards: Blurb content.")]),_v(" "),_c('li',[_v("Delimiter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("")]),_v(". Everything on the line after the delimiter will be ignored.")])])])],1)])],1),_v(" "),_c('p')]),_v(" "),_c('p',[_c('span',{staticClass:"badge bg-dark bigger-level0"},[_v("Step 8")]),_v(" "),_c('strong',[_v("View the generated report:")])]),_v(" "),_c('ol',[_c('li',[_v("Go to the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Settings")]),_v(" page of your fork in GitHub.")]),_v(" "),_c('li',[_v("Under the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("GitHub Pages")]),_v(" section, look for "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Your site is published at [LINK]")]),_v(". It should look something like "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://[YOUR_GITHUB_ID].github.io/publish-RepoSense")]),_v(".\n"),_c('a',{attrs:{"href":"/RepoSense/images/publishingguide-githubsetting.jpg","target":"_self"}},[_c('img',{staticClass:"img-fluid",attrs:{"src":"/RepoSense/images/publishingguide-githubsetting.jpg","alt":"GitHub Setting","title":"GitHub Setting"}})])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("It takes a few minutes for report generation. Meanwhile, you can monitor the progress live at "),_c('a',{attrs:{"href":"https://travis-ci.org/dashboard/builds"}},[_v("Travis-CI's Builds")]),_v(".")])])],1),_v(" "),_c('h2',{attrs:{"id":"updating-the-report-2"}},[_v("Updating the report"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#updating-the-report-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_v("Manual:")]),_v(" Travis UI has a way for you to trigger a build, using which you can cause the report to be updated.")]),_v(" "),_c('ol',[_c('li',[_v("Go to "),_c('a',{attrs:{"href":"https://travis-ci.org/search/publish-RepoSense/"}},[_v("your fork in Travis-CI")]),_v(", click on "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("More options")]),_v(" on the right then "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Trigger build")]),_v(".")]),_v(" "),_c('li',[_v("In the pop up, click "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Trigger custom build")]),_v(".")])]),_v(" "),_c('p',[_c('strong',[_v("Automated:")]),_v(" "),_c('a',{attrs:{"href":"https://travis-ci.org/"}},[_v("Travis-CI")]),_v(" offers "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Cron Jobs")]),_v(" in intervals of daily, weekly or monthly.")]),_v(" "),_c('ol',[_c('li',[_v("Login to "),_c('a',{attrs:{"href":"https://travis-ci.org/"}},[_v("Travis-CI")]),_v(".")]),_v(" "),_c('li',[_v("Go to "),_c('a',{attrs:{"href":"https://travis-ci.org/search/publish-RepoSense/"}},[_v("your fork in Travis-CI")]),_v(", click on "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("More options")]),_v(" on the right then access "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Settings")]),_v(".")]),_v(" "),_c('li',[_v("Under "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Cron Jobs")]),_v(", choose "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("master")]),_v(" for "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Branch")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Always run")]),_v(" for "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Options")]),_v(" and pick an "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Interval")]),_v(" of your choice; then click "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Add")]),_v(".\n"),_c('a',{attrs:{"href":"/RepoSense/images/publishingguide-cronsetting.jpg","target":"_self"}},[_c('img',{staticClass:"img-fluid",attrs:{"src":"/RepoSense/images/publishingguide-cronsetting.jpg","alt":"Travis-CI Cron","title":"Travis-CI Cron"}})])])])])])],1),_v(" "),_c('p'),_v(" "),_c('div',{staticClass:"indented-level0"},[_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('span',[_c('span',{staticClass:"glyphicon glyphicon-log-in",attrs:{"aria-hidden":"true"}})]),_v(" Appendix: "),_c('strong',[_v("Using RepoSense with Netlify")])])]},proxy:true}])},[_v(" "),_c('div',[_c('h1',{staticClass:"display-4",attrs:{"id":"appendix-reposense-with-netlify"}},[_c('span',[_v("Appendix: RepoSense with Netlify")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#appendix-reposense-with-netlify","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{attrs:{"id":"section-setting-up"}},[_c('box',{attrs:{"type":"warning","seamless":""}},[_c('p',[_v("Note that Netlify has a low limit for free tier users (only 300 "),_c('em',[_v("build minutes")]),_v(" per month as at June 2020 -- a single report generation can take 2-3 build minutes, longer if your report includes many/big repositories).")])]),_v(" "),_c('h2',{attrs:{"id":"setting-up-7"}},[_v("Setting up"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#setting-up-7","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('span',{staticClass:"badge bg-dark bigger-level0"},[_v("Step 1")]),_v(" "),_c('strong',[_v("Fork the "),_c('em',[_v("publish-RepoSense")]),_v(" repository")]),_v(" using this "),_c('a',{attrs:{"href":"https://github.com/RepoSense/publish-RepoSense/fork"}},[_v("link")]),_v(". Optionally, you can rename the fork to match your RepoSense report e.g., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("project-code-dashboard")]),_v(".")]),_v(" "),_c('p',[_c('span',{staticClass:"badge bg-dark bigger-level0"},[_v("Step 2")]),_v(" "),_c('strong',[_v("Set up Netlify for your fork")]),_v(" as described in this "),_c('a',{attrs:{"href":"https://www.netlify.com/blog/2016/09/29/a-step-by-step-guide-deploying-on-netlify/"}},[_v("guide")]),_v("."),_c('br'),_v(" "),_c('mark',[_v("You will need to use the following in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Step 5: Configure Your Settings")]),_v(" of that guide")]),_v(":")]),_v(" "),_c('ul',[_c('li',[_v("build command: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("pip install requests && ./run.sh")]),_c('br')]),_v(" "),_c('li',[_v("publish directory: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./reposense-report")])])]),_v(" "),_c('p',[_v("After Netlify finishes building the site, you should be able to see a dummy report at the URL of your Netlify site.")]),_v(" "),_c('p',[_c('span',{staticClass:"badge bg-dark bigger-level0"},[_v("Step 3")]),_v(" "),_c('strong',[_v("Generate the report you want")]),_v(" by updating the settings in your fork.")]),_v(" "),_c('ol',[_c('li',[_v("Go to the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("run.sh")]),_v(" file of your fork (on GitHub).")]),_v(" "),_c('li',[_v("Update the last line (i.e., the command for running RepoSense) to match the report you want to generate:"),_c('br'),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar --repos FULL_REPO_URL")]),_v(" (assuming you want to generate a default report for just one repo)"),_c('br'),_v("\ne.g., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar --repos https://github.com/reposense/RepoSense.git")]),_v(" ("),_c('mark',[_v("note the .git at the end of the repo URL")]),_v(")")]),_v(" "),_c('li',[_v("Commit the file. This will trigger Netlify to rebuild the report.")]),_v(" "),_c('li',[_v("Go to the URL of your Netlify site to see the updated RepoSense report (it might take about 2-5 minutes for Netlify to generate the report).")])])],1),_v(" "),_c('div',{attrs:{"id":"section-pr-previews"}},[_c('h2',{attrs:{"id":"pr-previews-2"}},[_v("PR previews"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#pr-previews-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("After setting up Netlify for your repo containing RepoSense settings, when a PR comes in to that repo to update any setting, you can scroll down the PR page and in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("All checks have passed")]),_v(", click on the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Details")]),_v(" beside "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("deploy/netlify — Deploy preview ready!")]),_v(" to see a preview of the report as per the changes in the PR.\n"),_c('a',{attrs:{"href":"/RepoSense/images/publishingguide-netlifypreview.png","target":"_self"}},[_c('img',{staticClass:"img-fluid",attrs:{"src":"/RepoSense/images/publishingguide-netlifypreview.png","alt":"Netlify Preview","title":"Netlify Preview"}})])])]),_v(" "),_c('h2',{attrs:{"id":"updating-the-report-3"}},[_v("Updating the report"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#updating-the-report-3","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_v("Manual:")]),_v(" Netlify UI has a way for you to trigger a build, using which you can cause the report to be updated.")]),_v(" "),_c('p',[_c('strong',[_v("Automated:")]),_v(" Netlify's can be set up to update the report whenever a target repo of your report is updated, provided you are able to update the target repos in a certain way.")]),_v(" "),_c('ol',[_c('li',[_c('p',[_v("Click on "),_c('strong',[_v("Settings")]),_v(" in the top, choose "),_c('strong',[_v("Build & deploy")]),_v(" from the left panel and scroll to "),_c('strong',[_v("Build hooks")]),_v(".\n"),_c('a',{attrs:{"href":"/RepoSense/images/using-netlify-build-hooks.png","target":"_self"}},[_c('img',{staticClass:"img-fluid",attrs:{"src":"/RepoSense/images/using-netlify-build-hooks.png","alt":"Build hooks"}})])])]),_v(" "),_c('li',[_c('p',[_v("Click "),_c('strong',[_v("Add build hook")]),_v(", give your webhook a name, and choose the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("master")]),_v(" branch to build. A Netlify URL will be generated.")])]),_v(" "),_c('li',[_c('p',[_v("Go to your target repository (the repository you want to analyze) and click on "),_c('strong',[_v("Settings")]),_v(".")])]),_v(" "),_c('li',[_c('p',[_v("Select "),_c('strong',[_v("Webhooks")]),_v(" on left panel and click on "),_c('strong',[_v("Add webhook")]),_v(".\n"),_c('a',{attrs:{"href":"/RepoSense/images/using-netlify-add-hook.png","target":"_self"}},[_c('img',{staticClass:"img-fluid",attrs:{"src":"/RepoSense/images/using-netlify-add-hook.png","alt":"Add webhook"}})])])]),_v(" "),_c('li',[_c('p',[_v("Copy the Netlify URL and paste it in the URL form field.\n"),_c('a',{attrs:{"href":"/RepoSense/images/using-netlify-url.png","target":"_self"}},[_c('img',{staticClass:"img-fluid",attrs:{"src":"/RepoSense/images/using-netlify-url.png","alt":"Webhook url"}})])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Note: Although the build url is not that secretive, it should be kept safe to prevent any misuse.")])])],1),_v(" "),_c('li',[_c('p',[_v("Select "),_c('strong',[_v("application.json")]),_v(" as content type.")])]),_v(" "),_c('li',[_c('p',[_v("Select "),_c('strong',[_v("Let me select individual events")]),_v(" and based on your requirements check the checkboxes.")])]),_v(" "),_c('li',[_c('p',[_v("Leave the "),_c('strong',[_v("Active")]),_v(" checkbox checked.")])]),_v(" "),_c('li',[_c('p',[_v("Click on "),_c('strong',[_v("Add webhook")]),_v(" to save the webhook and add it.")])])])])])],1),_v(" "),_c('p'),_v(" "),_c('h3',{attrs:{"id":"embeddable-widgets"}},[_v("Embeddable Widgets"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#embeddable-widgets","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Published reports can additionally be embedded in other websites through "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("iframes")]),_v(". Simply click the clipboard icon to generate and copy the iframe for your desired section of the report for either a single ramp chart or a group of ramp charts. Paste the iframe in any HTML supported document to render it.")]),_v(" "),_c('p',[_v("A sample iframe would look like:")]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"hljs html"}},[_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-tag"}},[_v("<"),_c('span',{pre:true,attrs:{"class":"hljs-name"}},[_v("iframe")]),_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("src")]),_v("="),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"XXX\"")]),_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("frameborder")]),_v("="),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"0\"")]),_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("width")]),_v("="),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"800px\"")]),_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("height")]),_v("="),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"XXXpx\"")]),_v(">")]),_c('span',{pre:true,attrs:{"class":"hljs-tag"}},[_v("")]),_v("\n")])])]),_c('p',[_v("Adjust the width and height to the desired dimensions as required.")])])])],1),_v(" "),_c('p'),_v(" "),_c('p',[_v("If you encounter problems at any step, you can refer to our FAQ, the troubleshooting guide, or post in our issue tracker.")]),_v(" "),_c('div',{staticClass:"indented-level0"},[_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('span',[_c('span',{staticClass:"glyphicon glyphicon-log-in",attrs:{"aria-hidden":"true"}})]),_v(" Appendix: "),_c('strong',[_v("FAQ")])])]},proxy:true}])},[_v(" "),_c('div',[_c('h1',{staticClass:"display-4",attrs:{"id":"appendix-faq"}},[_c('span',[_v("Appendix: FAQ")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#appendix-faq","onclick":"event.stopPropagation()"}})]),_v(" "),_c('h3',{attrs:{"id":"q-does-reposense-work-on-private-repositories"}},[_v("Q: Does RepoSense work on private repositories?"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#q-does-reposense-work-on-private-repositories","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_v("A:")]),_v(" "),_c('em',[_v("RepoSense")]),_v(" will first clone the git repository to be analyzed; thus, if you do not have access to the repository, we cannot run the analysis."),_c('br'),_v("\nTo enable "),_c('em',[_v("RepoSense")]),_v(" to work on private repositories, ensure that you have enabled access to your private repository in your git terminal first before running the analysis.")]),_v(" "),_c('h3',{attrs:{"id":"q-how-do-formats-work"}},[_v("Q: How do formats work?"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#q-how-do-formats-work","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_v("A:")]),_v(" "),_c('strong',[_v("Formats")]),_v(" are the "),_c('a',{attrs:{"href":"https://techterms.com/definition/fileextension"}},[_v("file extensions")]),_v(", which is the "),_c('strong',[_v("suffix")]),_v(" at the end of a filename that indicates what type of file it is."),_c('br'),_v("\nThe formats/file extensions to be analyzed by "),_c('em',[_v("RepoSense")]),_v(" can be specified through the "),_c('a',{attrs:{"href":"/RepoSense/ug/configFiles.html#config-json-standalone-config-file"}},[_v("standalone config file")]),_v(", "),_c('a',{attrs:{"href":"/RepoSense/ug/configFiles.html#repo-config-csv"}},[_v("repo-config file")]),_v(", and "),_c('a',{attrs:{"href":"/RepoSense/ug/cli.html#formats-f"}},[_v("command line")]),_v(".")]),_v(" "),_c('h3',{attrs:{"id":"q-how-does-ignore-glob-list-work"}},[_v("Q: How does ignore glob list work?"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#q-how-does-ignore-glob-list-work","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_v("A:")]),_v(" "),_c('a',{attrs:{"href":"https://en.wikipedia.org/wiki/Glob_(programming)"}},[_v("Glob")]),_v(" is the pattern to specify a set of filenames with "),_c('a',{attrs:{"href":"https://www.computerhope.com/jargon/w/wildcard.htm"}},[_v("wildcard characters")]),_v(". "),_c('strong',[_v("Ignore glob list")]),_v(" is the list of patterns to specify all the files in the repository which should be ignored from analysis."),_c('br'),_v("\nThe ignore glob list can be specified through the "),_c('a',{attrs:{"href":"/RepoSense/ug/configFiles.html#config-json-standalone-config-file"}},[_v("standalone config file")]),_v(", "),_c('a',{attrs:{"href":"/RepoSense/ug/configFiles.html#repo-config-csv"}},[_v("repo-config file")]),_v(", and "),_c('a',{attrs:{"href":"/RepoSense/ug/configFiles.html#author-config-csv"}},[_v("author-config file")]),_v(".")])])])],1),_v(" "),_c('p'),_v(" "),_c('div',{staticClass:"indented-level0"},[_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('span',[_c('span',{staticClass:"glyphicon glyphicon-log-in",attrs:{"aria-hidden":"true"}})]),_v(" Appendix: "),_c('strong',[_v("Troubleshooting guide")])])]},proxy:true}])},[_v(" "),_c('div',[_c('h1',{staticClass:"display-4",attrs:{"id":"appendix-troubleshooting"}},[_c('span',[_v("Appendix: Troubleshooting")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#appendix-troubleshooting","onclick":"event.stopPropagation()"}})]),_v(" "),_c('h3',{attrs:{"id":"contributions-missing-in-the-ramp-chart-but-appear-in-the-contribution-bar-and-code-panel"}},[_v("Contributions missing in the ramp chart (but appear in the contribution bar and code panel)"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#contributions-missing-in-the-ramp-chart-but-appear-in-the-contribution-bar-and-code-panel","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("This is probably a case of giving an incorrect author name alias (or Git ID) in your "),_c('a',{attrs:{"href":"/RepoSense/ug/configFiles.html#author-config-csv"}},[_v("author-config file")]),_v("."),_c('br'),_v("\nPlease refer to "),_c('a',{attrs:{"href":"/RepoSense/ug/configFiles.html#a-note-about-git-author-name"}},[_v("A Note About Git Author Name")]),_v(" above on how to find out the correct author name you are using and how to change it."),_c('br'),_v("\nAlso, ensure that you have added all author name aliases you may be using (if you are using multiple computers or have previously changed your author name)."),_c('br'),_v("\nAlternatively, you may choose to configure "),_c('em',[_v("RepoSense")]),_v(" to track the email associated with your local Git config or remote Git host email in a "),_c('a',{attrs:{"href":"/RepoSense/ug/configFiles.html#config-json-standalone-config-file"}},[_v("standalone config file")]),_v(" or "),_c('a',{attrs:{"href":"/RepoSense/ug/configFiles.html#author-config-csv"}},[_v("author-config file")]),_v(", which is more accurate compared to author name aliases. For GitHub, the associated email you are using can be found in your "),_c('a',{attrs:{"href":"https://github.com/settings/emails"}},[_v("GitHub settings")]),_v(".")]),_v(" "),_c('h3',{attrs:{"id":"contribution-bar-and-code-panel-is-empty-despite-a-non-empty-ramp-chart"}},[_v("Contribution bar and code panel is empty (despite a non-empty ramp chart)"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#contribution-bar-and-code-panel-is-empty-despite-a-non-empty-ramp-chart","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("The contribution bar and code panel records the lines you have authored to the "),_c('strong',[_v("latest")]),_v(" commit of the repository and branch you are analyzing. As such, it is possible that while you have lots of committed contributions, your final authorship contribution is low. This happens if you have only deleted lines or someone else has overwritten your code and taken authorship for it (currently, RepoSense does not have the functionality to track overwritten lines)."),_c('br'),_v("\nIt is also possible that another user has overridden the authorship of your lines using the "),_c('a',{attrs:{"href":"/RepoSense/ug/usingAuthorTags.html#appendix-using-author-tags"}},[_v("@@author tags")]),_v(".")]),_v(" "),_c('h3',{attrs:{"id":"reposense-is-not-using-the-standalone-config-file-in-my-local-repository"}},[_v("RepoSense is not using the standalone config file in my local repository"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#reposense-is-not-using-the-standalone-config-file-in-my-local-repository","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Ensure that you have committed the changes to your standalone config file first before running the analysis, as "),_c('em',[_v("RepoSense")]),_v(" is unable to detect uncommitted changes to your local repository.")]),_v(" "),_c('h3',{attrs:{"id":"reposense-fails-on-windows-but-works-on-linux-mac-os"}},[_v("RepoSense fails on Windows (but works on Linux/Mac OS)"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#reposense-fails-on-windows-but-works-on-linux-mac-os","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Possibly, you may have some file names with "),_c('a',{attrs:{"href":"https://docs.microsoft.com/en-us/windows/desktop/FileIO/naming-a-file#naming-conventions"}},[_v("special characters")]),_v(" in them, which is disallowed in Windows OS. As such, "),_c('em',[_v("RepoSense")]),_v(" is unable to clone your repository fully, thus failing the analysis.")]),_v(" "),_c('h3',{attrs:{"id":"some-file-types-are-not-shown-in-the-file-type-filter-even-if-i-have-included-them-in-the-file-formats-when-generating-the-report"}},[_v("Some file types are not shown in the file type filter even if I have included them in the file formats when generating the report"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#some-file-types-are-not-shown-in-the-file-type-filter-even-if-i-have-included-them-in-the-file-formats-when-generating-the-report","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("The files of these types may be "),_c('a',{attrs:{"href":"https://en.wikipedia.org/wiki/Binary_file"}},[_v("binary files")]),_v(". "),_c('em',[_v("RepoSense")]),_v(" will group binary files under one single file type "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("binary")]),_v(". Common binary files include images ("),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(".jpg")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(".png")]),_v("), applications ("),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(".exe")]),_v("), zip files ("),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(".zip")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(".rar")]),_v(") and certain document types ("),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(".docx")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(".pptx")]),_v(").")])])])],1),_v(" "),_c('p'),_v(" "),_c('br'),_v(" "),_c('br'),_v(" "),_c('h4',{attrs:{"id":"happy-reposensing"}},[_c('span',{staticClass:"text-green"},[_c('thumbnail',{attrs:{"circle":"","background":"#006600","font-color":"white","size":"50"}},[_c('span',{staticClass:"fas fa-heart",attrs:{"aria-hidden":"true"}})]),_v(" "),_c('span',[_v("Happy RepoSensing!")])],1),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#happy-reposensing","onclick":"event.stopPropagation()"}})])],1)],1),_v(" "),_m(3)])} +with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"fixed":""}},[_c('navbar',{attrs:{"type":"dark"},scopedSlots:_u([{key:"brand",fn:function(){return [_c('a',{staticClass:"navbar-brand",attrs:{"href":"/index.html","title":"Home"}},[_c('img',{attrs:{"width":"30px","src":"/favicon.ico"}})])]},proxy:true},{key:"right",fn:function(){return [_c('li',[_c('form',{staticClass:"navbar-form"},[_c('searchbar',{attrs:{"data":searchData,"placeholder":"Search","on-hit":searchCallback,"menu-align-right":""}})],1)])]},proxy:true}])},[_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/index.html"}},[_v("HOME")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/showcase.html"}},[_v("SHOWCASE")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/ug/index.html"}},[_v("USER GUIDE")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/dg/index.html"}},[_v("DEVELOPER GUIDE")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/about.html"}},[_v("ABOUT")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/contact.html"}},[_v("CONTACT")])]),_v(" "),_c('li',{attrs:{"tags":"dev"}},[_c('a',{staticClass:"nav-link",attrs:{"href":"https://reposense.org","target":"_blank"}},[_c('span',[_c('span',{staticClass:"fas fa-external-link-alt",attrs:{"aria-hidden":"true"}}),_v(" PRODUCTION SITE")])])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"https://github.com/RepoSense/reposense","target":"_blank"}},[_c('span',[_c('span',{staticClass:"fab fa-github",attrs:{"aria-hidden":"true"}})])])])]),_v(" "),_m(0)],1),_v(" "),_c('div',{attrs:{"id":"flex-body"}},[_c('overlay-source',{staticClass:"fixed-header-padding",attrs:{"id":"site-nav","tag-name":"nav","to":"site-nav"}},[_c('div',{staticClass:"site-nav-top"},[_c('div',{staticClass:"font-weight-bold mb-2",staticStyle:{"font-size":"1.25rem"}},[_c('span',[_c('strong',[_c('strong',[_v("USER GUIDE")])])])])]),_v(" "),_c('div',{staticClass:"nav-component slim-scroll"},[_c('div',[_c('site-nav',[_c('overlay-source',{staticClass:"site-nav-list site-nav-list-root",attrs:{"tag-name":"ul","to":"mb-site-nav"}},[_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/index.html"}},[_c('strong',[_v("Overview")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/generatingReports.html"}},[_c('strong',[_v("Generating reports")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/usingReports.html"}},[_c('strong',[_v("Using reports")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/customizingReports.html"}},[_c('strong',[_v("Customizing reports")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/sharingReports.html"}},[_c('strong',[_v("Sharing reports")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('strong',[_v("Appendices")]),_v(" "),_c('div',{staticClass:"site-nav-dropdown-btn-container"},[_c('i',{staticClass:"site-nav-dropdown-btn-icon site-nav-rotate-icon",attrs:{"onclick":"handleSiteNavClick(this.parentNode.parentNode, false); event.stopPropagation();"}},[_c('span',{staticClass:"glyphicon glyphicon-menu-down",attrs:{"aria-hidden":"true"}})])])]),_c('ul',{staticClass:"site-nav-dropdown-container site-nav-dropdown-container-open site-nav-list"},[_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/cli.html"}},[_v("CLI syntax reference")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/configFiles.html"}},[_v("Config files format")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/authorConfigSyntax.html"}},[_v("Advanced syntax: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/usingAuthorTags.html"}},[_v("Using "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("@@author")]),_v(" tags")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/withNetlify.html"}},[_v("RepoSense with Netlify")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/withGithubActions.html"}},[_v("RepoSense with GitHub Actions")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/withTravis.html"}},[_v("RepoSense with Travis")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/runSh.html"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("run.sh")]),_v(" format")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/faq.html"}},[_v("FAQ")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/troubleshooting.html"}},[_v("Troubleshooting")])])])])])])],1)],1)])]),_v(" "),_c('div',{staticClass:"fixed-header-padding",attrs:{"id":"content-wrapper"}},[_m(1),_v(" "),_m(2),_v(" "),_c('hr',{staticClass:"thick"}),_v(" "),_c('p',[_v("In case you missed it, the overview of RepoSense is given below.")]),_v(" "),_c('div',{staticClass:"indented-level0"},[_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('span',[_c('span',{staticClass:"glyphicon glyphicon-log-in",attrs:{"aria-hidden":"true"}})]),_v(" "),_c('strong',[_v("RepoSense overview")])])]},proxy:true}])},[_v(" "),_c('div',[_c('p',[_c('strong',[_v("RepoSense can generate interactive visualizations of programmer activities, even across multiple repositories.")]),_v(" It's ideal for educators and managers to get insights into the programming activities of their mentees. The visualizations can be "),_c('strong',[_v("easily shared")]),_v(" with others (e.g., as an online dashboard), and updating the visualizations periodically "),_c('strong',[_v("can be automated")]),_v(".")]),_v(" "),_c('p',[_v("Some example insights RepoSense can provide:")]),_v(" "),_c('h4',{attrs:{"id":"insights-about-the-code"}},[_c('thumbnail',{attrs:{"circle":"","background":"#006600","font-color":"white","size":"50"}},[_c('span',{staticClass:"fas fa-code",attrs:{"aria-hidden":"true"}})]),_v(" "),_c('span',{staticClass:"lead font-weight-bold text-green"},[_v("Insights about the code")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#insights-about-the-code","onclick":"event.stopPropagation()"}})],1),_v(" "),_c('ul',[_c('li',[_v("Which part of the code was written by Tom? How many lines? How many files?")]),_v(" "),_c('li',[_v("Which test cases were written by Kim?")]),_v(" "),_c('li',[_v("Which commit messages were written by Serene?")])]),_v(" "),_c('h4',{attrs:{"id":"insights-about-the-type-of-work"}},[_c('thumbnail',{attrs:{"circle":"","background":"#006600","font-color":"white","size":"50"}},[_c('span',{staticClass:"fas fa-chart-pie",attrs:{"aria-hidden":"true"}})]),_v(" "),_c('span',{staticClass:"lead font-weight-bold text-green"},[_v("Insights about the type of work")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#insights-about-the-type-of-work","onclick":"event.stopPropagation()"}})],1),_v(" "),_c('ul',[_c('li',[_v("Which portion of Jacob's code is documentation?")]),_v(" "),_c('li',[_v("Who hasn't written any test code yet?")]),_v(" "),_c('li',[_v("Which project did Jolene contribute to in the last month?")])]),_v(" "),_c('h4',{attrs:{"id":"insights-about-the-timing-of-work"}},[_c('thumbnail',{attrs:{"circle":"","background":"#006600","font-color":"white","size":"50"}},[_c('span',{staticClass:"fas fa-business-time",attrs:{"aria-hidden":"true"}})]),_v(" "),_c('span',{staticClass:"lead font-weight-bold text-green"},[_v("Insights about the timing of work")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#insights-about-the-timing-of-work","onclick":"event.stopPropagation()"}})],1),_v(" "),_c('ul',[_c('li',[_v("Who is putting in the consistent effort?")]),_v(" "),_c('li',[_v("Who waits till the deadline to do the work?")]),_v(" "),_c('li',[_v("Who hasn't started any work yet?")])]),_v(" "),_c('h4',{attrs:{"id":"insights-based-on-comparisons"}},[_c('thumbnail',{attrs:{"circle":"","background":"#006600","font-color":"white","size":"50"}},[_c('span',{staticClass:"fas fa-list-ol",attrs:{"aria-hidden":"true"}})]),_v(" "),_c('span',{staticClass:"lead font-weight-bold text-green"},[_v("Insights based on comparisons")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#insights-based-on-comparisons","onclick":"event.stopPropagation()"}})],1),_v(" "),_c('ul',[_c('li',[_v("Which programmers/teams are falling behind?")]),_v(" "),_c('li',[_v("How does everyone compare in their front-end coding work over the past two weeks?")]),_v(" "),_c('li',[_v("Who are the top 10 code contributors?")])])])])],1),_v(" "),_c('p'),_v(" "),_c('box',{attrs:{"type":"definition","seamless":""}},[_c('p',[_c('strong',[_v("Report")]),_v(": We use the term "),_c('em',[_v("report")]),_v(" to refer to the web-based visualization generated by RepoSense. You can also think of it as a "),_c('em',[_v("dashboard")]),_v(".")])]),_v(" "),_c('h1',{attrs:{"id":"1-explore-real-life-examples"}},[_c('thumbnail',{attrs:{"circle":"","background":"#006600","font-color":"white","size":"50"}},[_v("1")]),_v(" "),_c('strong',[_v("Explore")]),_v(" real-life examples"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#1-explore-real-life-examples","onclick":"event.stopPropagation()"}})],1),_v(" "),_c('p',[_v("If still not entirely sure if RepoSense matches your needs, you can use the examples of real-life RepoSense reports given below to get some sense of what visualizations it produces.")]),_v(" "),_c('div',{staticClass:"indented-level0"},[_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('span',[_c('span',{staticClass:"glyphicon glyphicon-log-in",attrs:{"aria-hidden":"true"}})]),_v(" "),_c('strong',[_v("A showcase of RepoSense reports")])])]},proxy:true}])},[_v(" "),_c('div',[_c('h1',{staticClass:"display-3",attrs:{"id":"showcase"}},[_c('span',[_v("Showcase")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#showcase","onclick":"event.stopPropagation()"}})]),_v(" "),_c('h3',{attrs:{"id":"case-1-monitoring-student-programmers-individual-projects"}},[_v("Case 1: Monitoring student programmers ("),_c('strong',[_v("individual")]),_v(" projects)"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#case-1-monitoring-student-programmers-individual-projects","onclick":"event.stopPropagation()"}})]),_v(" "),_c('ul',[_c('li',[_c('p',[_c('strong',[_v("Scenario:")]),_v(" RepoSense is used to monitor a Software Engineering course in which students build a project over 8 weeks.")])]),_v(" "),_c('li',[_c('p',[_c('strong',[_v("Links:")]),_v(" "),_c('a',{attrs:{"href":"https://nus-cs2103-ay2021s1.github.io/ip-dashboard/?search=&sort=groupTitle&sortWithin=title&since=2020-08-14&until=2020-09-27&timeframe=commit&mergegroup=&groupSelect=groupByRepos&breakdown=false"}},[_v("report")]),_v(" | "),_c('a',{attrs:{"href":"https://github.com/nus-cs2103-AY2021S1/ip-dashboard"}},[_v("repo containing the settings")])])]),_v(" "),_c('li',[_c('p',[_c('strong',[_v("Example usages:")])]),_v(" "),_c('ul',[_c('li',[_v("To compare students based on the amount of code written, we can sort by contribution, as done in "),_c('a',{attrs:{"href":"https://nus-cs2103-ay2021s1.github.io/ip-dashboard/?search=&sort=totalCommits%20dsc&sortWithin=title&since=2020-08-14&until=2020-09-27&timeframe=commit&mergegroup=&groupSelect=groupByRepos&breakdown=false"}},[_v("this view")]),_v(".")]),_v(" "),_c('li',[_c('a',{attrs:{"href":"https://nus-cs2103-ay2021s1.github.io/ip-dashboard/?search=keanecjy&sort=totalCommits%20dsc&sortWithin=title&since=2020-08-14&until=2020-09-27&timeframe=commit&mergegroup=&groupSelect=groupByRepos&breakdown=false&tabOpen=true&tabType=authorship&tabAuthor=keanecjy&tabRepo=keanecjy%2Fip%5Bmaster%5D&authorshipIsMergeGroup=false&authorshipFileTypes=java~md~fxml~bat~gradle~txt"}},[_v("This view")]),_v(" shows us code written by a specific student.")])])])]),_v(" "),_c('h3',{attrs:{"id":"case-2-monitoring-student-programmers-team-projects"}},[_v("Case 2: Monitoring student programmers ("),_c('strong',[_v("team")]),_v(" projects)"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#case-2-monitoring-student-programmers-team-projects","onclick":"event.stopPropagation()"}})]),_v(" "),_c('ul',[_c('li',[_c('p',[_c('strong',[_v("Scenario:")]),_v(" Similar to case 1 above, but this time students are doing team projects.")])]),_v(" "),_c('li',[_c('p',[_c('strong',[_v("Links:")]),_v(" "),_c('a',{attrs:{"href":"https://nus-cs2103-ay2122s1.github.io/tp-dashboard/?search=&sort=groupTitle&sortWithin=title&timeframe=commit&mergegroup=&groupSelect=groupByRepos&breakdown=false&since=2021-09-17&until=2021-11-19"}},[_v("report")]),_v(" | "),_c('a',{attrs:{"href":"https://github.com/nus-cs2103-AY2122S1/tp-dashboard"}},[_v("settings")])])]),_v(" "),_c('li',[_c('p',[_c('strong',[_v("Example usages:")])]),_v(" "),_c('ul',[_c('li',[_v("To find the breakdown of the work done, we can tick the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("breakdown by file type")]),_v(" checkbox, as shown in "),_c('a',{attrs:{"href":"https://nus-cs2103-ay2122s1.github.io/tp-dashboard/?search=&sort=groupTitle&sortWithin=title&timeframe=commit&mergegroup=&groupSelect=groupByRepos&breakdown=true&checkedFileTypes=docs~functional-code~test-code~other&since=2021-09-17&until=2021-11-19"}},[_v("this view")]),_v(". After that, we can filter out certain file types by un-ticking the file type.")]),_v(" "),_c('li',[_v("To find how teams compare in terms of total work done, we can tick the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("merge all groups")]),_v(" check-box and sort groups by "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Contribution")]),_v(", as seen in "),_c('a',{attrs:{"href":"https://nus-cs2103-ay2122s1.github.io/tp-dashboard/?search=&sort=totalCommits%20dsc&sortWithin=title&timeframe=week&mergegroup=AY2122S1-CS2103-F09-1%2Ftp%5Bmaster%5D~AY2122S1-CS2103-F09-2%2Ftp%5Bmaster%5D~AY2122S1-CS2103-F09-3%2Ftp%5Bmaster%5D~AY2122S1-CS2103-F09-4%2Ftp%5Bmaster%5D~AY2122S1-CS2103-F10-1%2Ftp%5Bmaster%5D~AY2122S1-CS2103-F10-2%2Ftp%5Bmaster%5D~AY2122S1-CS2103-F10-3%2Ftp%5Bmaster%5D~AY2122S1-CS2103-F10-4%2Ftp%5Bmaster%5D~AY2122S1-CS2103-T14-1%2Ftp%5Bmaster%5D~AY2122S1-CS2103-T14-2%2Ftp%5Bmaster%5D~AY2122S1-CS2103-T14-3%2Ftp%5Bmaster%5D~AY2122S1-CS2103-T14-4%2Ftp%5Bmaster%5D~AY2122S1-CS2103-T16-1%2Ftp%5Bmaster%5D~AY2122S1-CS2103-T16-2%2Ftp%5Bmaster%5D~AY2122S1-CS2103-T16-3%2Ftp%5Bmaster%5D~AY2122S1-CS2103-T16-4%2Ftp%5Bmaster%5D~AY2122S1-CS2103-W14-1%2Ftp%5Bmaster%5D~AY2122S1-CS2103-W14-2%2Ftp%5Bmaster%5D~AY2122S1-CS2103-W14-3%2Ftp%5Bmaster%5D~AY2122S1-CS2103-W14-4%2Ftp%5Bmaster%5D~AY2122S1-CS2103T-F11-1%2Ftp%5Bmaster%5D~AY2122S1-CS2103T-F11-2%2Ftp%5Bmaster%5D~AY2122S1-CS2103T-F11-3%2Ftp%5Bmaster%5D~AY2122S1-CS2103T-F11-4%2Ftp%5Bmaster%5D~AY2122S1-CS2103T-F12-1%2Ftp%5Bmaster%5D~AY2122S1-CS2103T-F12-2%2Ftp%5Bmaster%5D~AY2122S1-CS2103T-F12-3%2Ftp%5Bmaster%5D~AY2122S1-CS2103T-F12-4%2Ftp%5Bmaster%5D~AY2122S1-CS2103T-F13-1%2Ftp%5Bmaster%5D~AY2122S1-CS2103T-F13-2%2Ftp%5Bmaster%5D~AY2122S1-CS2103T-F13-3%2Ftp%5Bmaster%5D~AY2122S1-CS2103T-F13-4%2Ftp%5Bmaster%5D~AY2122S1-CS2103T-T09-1%2Ftp%5Bmaster%5D~AY2122S1-CS2103T-T09-2%2Ftp%5Bmaster%5D~AY2122S1-CS2103T-T09-3%2Ftp%5Bmaster%5D~AY2122S1-CS2103T-T09-4%2Ftp%5Bmaster%5D~AY2122S1-CS2103T-T10-1%2Ftp%5Bmaster%5D~AY2122S1-CS2103T-T10-2%2Ftp%5Bmaster%5D~AY2122S1-CS2103T-T10-3%2Ftp%5Bmaster%5D~AY2122S1-CS2103T-T10-4%2Ftp%5Bmaster%5D~AY2122S1-CS2103T-T11-1%2Ftp%5Bmaster%5D~AY2122S1-CS2103T-T11-2%2Ftp%5Bmaster%5D~AY2122S1-CS2103T-T11-3%2Ftp%5Bmaster%5D~AY2122S1-CS2103T-T11-4%2Ftp%5Bmaster%5D~AY2122S1-CS2103T-T12-1%2Ftp%5Bmaster%5D~AY2122S1-CS2103T-T12-2%2Ftp%5Bmaster%5D~AY2122S1-CS2103T-T12-3%2Ftp%5Bmaster%5D~AY2122S1-CS2103T-T12-4%2Ftp%5Bmaster%5D~AY2122S1-CS2103T-T13-1%2Ftp%5Bmaster%5D~AY2122S1-CS2103T-T13-2%2Ftp%5Bmaster%5D~AY2122S1-CS2103T-T13-3%2Ftp%5Bmaster%5D~AY2122S1-CS2103T-T13-4%2Ftp%5Bmaster%5D~AY2122S1-CS2103T-T15-1%2Ftp%5Bmaster%5D~AY2122S1-CS2103T-T15-2%2Ftp%5Bmaster%5D~AY2122S1-CS2103T-T15-3%2Ftp%5Bmaster%5D~AY2122S1-CS2103T-T15-4%2Ftp%5Bmaster%5D~AY2122S1-CS2103T-T17-1%2Ftp%5Bmaster%5D~AY2122S1-CS2103T-T17-2%2Ftp%5Bmaster%5D~AY2122S1-CS2103T-T17-3%2Ftp%5Bmaster%5D~AY2122S1-CS2103T-T17-4%2Ftp%5Bmaster%5D~AY2122S1-CS2103T-W08-1%2Ftp%5Bmaster%5D~AY2122S1-CS2103T-W08-2%2Ftp%5Bmaster%5D~AY2122S1-CS2103T-W08-3%2Ftp%5Bmaster%5D~AY2122S1-CS2103T-W08-4%2Ftp%5Bmaster%5D~AY2122S1-CS2103T-W10-1%2Ftp%5Bmaster%5D~AY2122S1-CS2103T-W10-2%2Ftp%5Bmaster%5D~AY2122S1-CS2103T-W10-3%2Ftp%5Bmaster%5D~AY2122S1-CS2103T-W10-4%2Ftp%5Bmaster%5D~AY2122S1-CS2103T-W11-1%2Ftp%5Bmaster%5D~AY2122S1-CS2103T-W11-2%2Ftp%5Bmaster%5D~AY2122S1-CS2103T-W11-3%2Ftp%5Bmaster%5D~AY2122S1-CS2103T-W11-4%2Ftp%5Bmaster%5D~AY2122S1-CS2103T-W12-1%2Ftp%5Bmaster%5D~AY2122S1-CS2103T-W12-2%2Ftp%5Bmaster%5D~AY2122S1-CS2103T-W12-3%2Ftp%5Bmaster%5D~AY2122S1-CS2103T-W12-4%2Ftp%5Bmaster%5D~AY2122S1-CS2103T-W13-1%2Ftp%5Bmaster%5D~AY2122S1-CS2103T-W13-2%2Ftp%5Bmaster%5D~AY2122S1-CS2103T-W13-3%2Ftp%5Bmaster%5D~AY2122S1-CS2103T-W13-4%2Ftp%5Bmaster%5D~AY2122S1-CS2103T-W15-1%2Ftp%5Bmaster%5D~AY2122S1-CS2103T-W15-2%2Ftp%5Bmaster%5D~AY2122S1-CS2103T-W15-3%2Ftp%5Bmaster%5D~AY2122S1-CS2103T-W15-4%2Ftp%5Bmaster%5D~AY2122S1-CS2103T-W16-1%2Ftp%5Bmaster%5D~AY2122S1-CS2103T-W16-2%2Ftp%5Bmaster%5D~AY2122S1-CS2103T-W16-3%2Ftp%5Bmaster%5D~AY2122S1-CS2103T-W16-4%2Ftp%5Bmaster%5D~AY2122S1-CS2103T-W17-1%2Ftp%5Bmaster%5D~AY2122S1-CS2103T-W17-2%2Ftp%5Bmaster%5D~AY2122S1-CS2103T-W17-3%2Ftp%5Bmaster%5D~AY2122S1-CS2103T-W17-4%2Ftp%5Bmaster%5D&groupSelect=groupByRepos&breakdown=true&since=2021-09-17&until=2021-11-19&checkedFileTypes=docs~functional-code~test-code~other"}},[_v("this view")]),_v(". Also, note how "),_c('tooltip',{scopedSlots:_u([{key:"content",fn:function(){return [_v("i.e., each ramp represents the work done by the entire team in the whole week")]},proxy:true}])},[_v("the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("granularity")]),_v(" of the ramps is set to "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Week")])]),_v(" to reduce clutter.")],1),_v(" "),_c('li',[_c('a',{attrs:{"href":"https://nus-cs2103-ay2122s1.github.io/tp-dashboard/?search=&sort=groupTitle&sortWithin=title&timeframe=commit&mergegroup=&groupSelect=groupByRepos&breakdown=true&checkedFileTypes=docs~functional-code~test-code~other&since=2021-10-29&until=2021-11-11"}},[_v("This view")]),_v(" shows the activities near the submission deadline of "),_c('a',{attrs:{"href":"https://nus-cs2103-ay2122s1.github.io/website/admin/tp-w13.html"}},[_v("8 November 2021")]),_v(" (note how some have overshot the deadline and some others show a frenzy of activities very near to the deadline).")])])])]),_v(" "),_c('h3',{attrs:{"id":"case-3-monitoring-student-programmers-multiple-external-projects"}},[_v("Case 3: Monitoring student programmers ("),_c('strong',[_v("multiple")]),_v(" external projects)"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#case-3-monitoring-student-programmers-multiple-external-projects","onclick":"event.stopPropagation()"}})]),_v(" "),_c('ul',[_c('li',[_c('p',[_c('strong',[_v("Scenario:")]),_v(" Similar to cases 1 and 2 above, but this time, each student works on multiple projects. Furthermore, most projects are external OSS projects, not within the control of the teacher.")])]),_v(" "),_c('li',[_c('p',[_c('strong',[_v("Links:")]),_v(" "),_c('a',{attrs:{"href":"https://nus-cs3281.github.io/2020-dashboard/?search=&sort=groupTitle&sortWithin=title&since=2019-12-01&timeframe=commit&mergegroup=&groupSelect=groupByRepos&breakdown=false"}},[_v("report")]),_v(" | "),_c('a',{attrs:{"href":"https://github.com/nus-cs3281/2020-dashboard"}},[_v("settings")])])]),_v(" "),_c('li',[_c('p',[_c('strong',[_v("Example usages:")])]),_v(" "),_c('ul',[_c('li',[_c('a',{attrs:{"href":"https://nus-cs3281.github.io/2020-dashboard/?search=&sort=groupTitle&sortWithin=title&since=2019-12-01&timeframe=commit&mergegroup=&groupSelect=groupByRepos&breakdown=false&tabOpen=true&tabType=zoom&zA=anubh-v&zR=CATcher-org%2FCATcher%5Bmaster%5D&zACS=153.40466101694915&zS=2019-12-01&zFS=&zU=2021-06-15&zMG=false&zFTF=commit&zFGS=groupByRepos&zFR=false"}},[_v("This view")]),_v(" shows the commit messages written by a specific student.")]),_v(" "),_c('li',[_v("Note how we can use the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("group by")]),_v(" drop-down to organize activities around projects or individual authors.")]),_v(" "),_c('li',[_v("Similarly, we can use the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("merge all groups")]),_v(" check-box to see the sum of activities in a specific project or by a specific student.")])])])])])])],1),_v(" "),_c('p'),_v(" "),_c('p',[_v("As you explore the above examples, you can refer to the following section to learn how to read and interact with those reports.")]),_v(" "),_c('div',{staticClass:"indented-level0"},[_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('span',[_c('span',{staticClass:"glyphicon glyphicon-log-in",attrs:{"aria-hidden":"true"}})]),_v(" "),_c('strong',[_v("Using reports")])])]},proxy:true}])},[_v(" "),_c('div',[_c('h1',{staticClass:"display-4",attrs:{"id":"using-reports"}},[_c('span',[_v("Using reports")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#using-reports","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{staticClass:"lead"},[_c('p',[_v("Let's look at how to view, interpret, and interact with a RepoSense report.")])]),_v(" "),_c('h2',{attrs:{"id":"viewing-the-report"}},[_v("Viewing the report"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#viewing-the-report","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("As a report consists of web pages, it can be viewed using a Web Browser. Here are the ways to view the report in different situations.")]),_v(" "),_c('ul',[_c('li',[_c('strong',[_v("Situation 1: The report has been hosted on a website")]),_v(" "),_c('ul',[_c('li',[_v("Simply go to the URL of the report ("),_c('a',{attrs:{"href":"https://nus-cs2113-ay1920s2.github.io/tp-dashboard"}},[_v("example")]),_v(") in your browser.")])])]),_v(" "),_c('li',[_c('strong',[_v("Situation 2: You generated the report in your computer earlier")]),_v(" "),_c('ul',[_c('li',[_v("Run RepoSense with the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--view")]),_v(" option:"),_c('br'),_v("\nFormat: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar --view REPORT_FOLDER")]),_c('br'),_v("\ne.g., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar --view ./myReport/reposense-report")])])])]),_v(" "),_c('li',[_c('strong',[_v("Situation 3: The report was given to you as a zip file or as a folder")]),_v(" "),_c('ol',[_c('li',[_v("If it is a zip file, unzip it.")]),_v(" "),_c('li',[_v("Open the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("index.html")]),_v(" (in the unzipped report directory) using a browser.")]),_v(" "),_c('li',[_v("If the report was not loaded automatically, click on the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("choose file")]),_v(" button in the shown web page, and select the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("archive.zip")]),_v(" (in the same directory) manually."),_c('br'),_v("\nIf even the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("choose file")]),_v(" button is not showing up, try a different browser.")])])])]),_v(" "),_c('h2',{attrs:{"id":"report-structure"}},[_v("Report structure"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#report-structure","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Here is an example of how a typical report looks like:")]),_v(" "),_c('p',[_c('a',{attrs:{"href":"/RepoSense/images/report-features.png","target":"_self"}},[_c('img',{staticClass:"img-fluid",attrs:{"src":"/RepoSense/images/report-features.png","alt":"report"}})])]),_v(" "),_c('p',[_v("The report is divided into two sections: "),_c('a',{attrs:{"href":"#chart-panel"}},[_c('em',[_c('strong',[_v("Chart panel")])])]),_v(" and the "),_c('a',{attrs:{"href":"#code-panel"}},[_c('em',[_c('strong',[_v("Code panel")])])]),_v(". In some situations, the "),_c('a',{attrs:{"href":"#commits-panel"}},[_c('em',[_c('strong',[_v("Commits panel")])])]),_v(" will appear in place of the "),_c('em',[_v("code panel")]),_v(". All three are explained in the sections below.")]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Links to external webpages (repository link, author's profile, blame view, etc.) is only properly supported when RepoSense analyzes a remote repository belonging to GitHub, GitLab or BitBucket.")])]),_v(" "),_c('h2',{attrs:{"id":"chart-panel"}},[_v("Chart panel"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#chart-panel","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('a',{attrs:{"href":"/RepoSense/images/rampchart.png","target":"_self"}},[_c('img',{staticClass:"img-fluid",attrs:{"src":"/RepoSense/images/rampchart.png","alt":"Ramp Charts"}})]),_c('br')]),_v(" "),_c('p',[_v("The "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Chart panel")]),_v(" (an example is shown above) contains a series of "),_c('em',[_v("ramp chart")]),_v(" + "),_c('em',[_v("contribution bar")]),_v(" pairs, possibly organized into sub-groups, with a "),_c('em',[_v("tool bar")]),_v(" at the top.")]),_v(" "),_c('h4',{attrs:{"id":"ramp-charts"}},[_v("Ramp charts"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#ramp-charts","onclick":"event.stopPropagation()"}})]),_v(" "),_c('box',{attrs:{"type":"definition","seamless":""}},[_c('p',[_c('strong',[_v("Ramp chart")]),_v(": This is a visualization of the frequency and quantity of contributions of an author for a specific repository. Each ramp chart (i.e., light blue rectangle) represents an author's contribution timeline for a particular repository. Contributions appear as ramps in the timeline.")])]),_v(" "),_c('box',{attrs:{"type":"definition","seamless":""}},[_c('p',[_c('strong',[_v("Ramp")]),_v(": The name we use to refer to the triangular saw-tooth-like shape that represents a code contribution. A ramp can represent a single commit, a sum of the commits done in a certain period, depending on the granularity used.")])]),_v(" "),_c('ul',[_c('li',[_v("The ramp's area is proportional to the amount of contribution the author made at that time period.")]),_v(" "),_c('li',[_v("The position of the right edge of the ramp (perpendicular to the blue bar) represents the period (the day or the week) in which the contribution was made.")]),_v(" "),_c('li',[_v("Hover the pointer over a ramp to see the total number of lines represented by that ramp.")]),_v(" "),_c('li',[_v("Click on the ramp to view details about the list of commits represented in the ramp.\n"),_c('ul',[_c('li',[_v("At the commit-level of granularity, it links to the commit in the remote repository.")]),_v(" "),_c('li',[_v("At higher levels of granularity, it displays the list of commits in the Code Panel.")])])]),_v(" "),_c('li',[_v("To make the comparison between two authors easier, the color of the ramps that represent different authors' contributions at the same time period are the same.")]),_v(" "),_c('li',[_v("Ramps representing big contributions can overlap with earlier time periods. This represents the possibility that if the work committed during a specific period is big, it could have started at an earlier time period.")])]),_v(" "),_c('h4',{attrs:{"id":"contribution-bars"}},[_v("Contribution bars"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#contribution-bars","onclick":"event.stopPropagation()"}})]),_v(" "),_c('box',{attrs:{"type":"definition","seamless":""}},[_c('p',[_c('strong',[_v("Contribution bar")]),_v(": It's the bar that appears below each ramp chart. Its length represents the total amount of code contributed by an author during the "),_c('em',[_v("total analysis period")]),_v(".")])]),_v(" "),_c('ul',[_c('li',[_v("Hover over a contribution bar to see the exact amount of the contribution.")]),_v(" "),_c('li',[_v("If an author contributed significantly higher than other authors, the contribution bar could "),_c('em',[_v("overflow")]),_v(" into multiple lines.")])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("We allow contribution bars to overflow into multiple lines (rather than adjust the scale to fit the maximum bar length) to prevent a minority of "),_c('tooltip',{scopedSlots:_u([{key:"content",fn:function(){return [_v("i.e., those contributing an unusually high amount of code")]},proxy:true}])},[_v("outliers")]),_v(" from affecting the scale of the majority.")],1)]),_v(" "),_c('h4',{attrs:{"id":"tool-bar"}},[_v("Tool bar"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#tool-bar","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("The "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Tool Bar")]),_v(" at the top of the Chart panel provides a set of configuration options that control the Chart panel.")]),_v(" "),_c('ul',[_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Search")]),_v(": filters the author and repository by keywords.\n"),_c('ul',[_c('li',[_v("Multiple keywords/terms can be used, separated by spaces.")]),_v(" "),_c('li',[_v("Entries that contain "),_c('em',[_v("any")]),_v(" (not necessarily "),_c('em',[_v("all")]),_v(") of the search terms will be displayed.")]),_v(" "),_c('li',[_v("The keywords used to filter the author and repository are case-insensitive.")]),_v(" "),_c('li',[_v("Starting a search with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("tag:")]),_v(" will filter author and repository by git tags. Similar search rules as above (like separating multiple tag names by space) apply.")])])]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Group by")]),_v(": grouping criteria for the rows of results.\n"),_c('ul',[_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("None")]),_v(": results will not be grouped in any particular way.")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repo/Branch")]),_v(": results will be grouped by repositories and its' associating branches.")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Author")]),_v(": results will be grouped by the name of the author. Contributions made to multiple repositories by a particular author will be grouped under the author.")])])]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Sort groups by")]),_v(": sorting criteria for the main group. See note [1] below.\n"),_c('ul',[_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Group title")]),_v(": groups will be sorted by the title of the group (in bold text) in alphabetical order.")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Contribution")]),_v(": groups will be sorted by the combined contributions within a group, in the order of number of lines added.")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Variance")]),_v(": groups will be sorted by how far the daily contributions are spread out from their average value among all authors involved. A detailed definition of variance is located "),_c('a',{attrs:{"href":"https://en.wikipedia.org/wiki/Variance"}},[_v("here")]),_v(".")])])]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Sort within groups by")]),_v(": sorting criteria within each group.\n"),_c('ul',[_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Title")]),_v(": each group will be internally sorted by its title in alphabetical order.")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Contribution")]),_v(": each group will be internally sorted by individual contributions in the order of number of lines added.")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Variance")]),_v(": each group will be internally sorted by how far the daily contributions are spread out from their average value by each author into a particular repo. A detailed definition of variance is located "),_c('a',{attrs:{"href":"https://en.wikipedia.org/wiki/Variance"}},[_v("here")]),_v(".")])])]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Granularity")]),_v(": the period of time for which commits are aggregated in the Ramp Chart.\n"),_c('ul',[_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Commit")]),_v(": each commit made is shown as one ramp.")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Day")]),_v(": commits within a day (commits made within 00:00 to 23:59) are shown as one ramp.")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Week")]),_v(": commits within a week (from Monday 00:00 to Sunday 23:59) are shown as one ramp.")])])]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Since")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Until")]),_v(": the date range for the Ramp Chart (not applied to the Contribution Bars).")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Reset date range")]),_v(": resets the date range of the Ramp Chart to the default date range.")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Breakdown by file type")]),_v(": toggles the contribution bar to either display the bar by :\n"),_c('ul',[_c('li',[_v("the total lines of codes added (if the checkbox is left unchecked), or")]),_v(" "),_c('li',[_v("a breakdown of the number of lines of codes added to each file type (if the checkbox is checked). More info on note [3] below.")])])]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Merge group")]),_v(": merges all the ramp charts of each group into a single ramp chart; aggregates the contribution of each group.\n"),_c('ul',[_c('li',[_v("viewing of authored code of the group as a whole is available when "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("group by repos")]),_v(".")])])]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Show tags")]),_v(": shows the tags of all the repos under a group")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Trim timeline")]),_v(": trims the starting and ending portion of each ramp where no commits were made; only the part of each ramp where commits were made will be shown.")])]),_v(" "),_c('p',[_v("Notes:"),_c('br'),_v("\n[1] "),_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Sort groups by")])]),_v(": each main group has its own index and percentile according to its ranking position after sorting (e.g., if the groups are sorted by contribution in descending order, a 25% percentile indicates that the group is in the top 25% of the whole cohort in terms of contribution)"),_c('br'),_v(".\n[2] "),_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repo/Branch")])]),_v(": the repo/branch name is constructed as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ORGANIZATION/REPOSITORY[BRANCH]")]),_v(" (e.g., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("reposense/reposense[master]")]),_v(")"),_c('br'),_v("\n[3] The total contribution of each group will get updated based on the checked file types and will be taken into account when the sorting criteria is contribution.")]),_v(" "),_c('box',{attrs:{"type":"tip","seamless":""}},[_c('p',[_c('strong',[_v("RepoSense support "),_c('em',[_v("intelligent")]),_v(" bookmarks")]),_v(": Note how the browser URL changes as you modify settings in the report. If you send that URL to someone else, that person will be able to use that URL to view the report in the same "),_c('em',[_v("view configuration")]),_v(" you had when you copied the URL. For example, "),_c('a',{attrs:{"href":"https://nus-cs2113-ay1920s2.github.io/tp-dashboard/"}},[_v("this URL")]),_v(" and "),_c('a',{attrs:{"href":"https://nus-cs2113-ay1920s2.github.io/tp-dashboard/#search=&sort=groupTitle&sortWithin=title&since=2020-03-01&timeframe=day&mergegroup=true&groupSelect=groupByRepos&breakdown=true"}},[_v("this URL")]),_v(" give two different views of the same report.")])]),_v(" "),_c('h2',{attrs:{"id":"code-panel"}},[_v("Code panel"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#code-panel","onclick":"event.stopPropagation()"}})]),_v(" "),_c('img',{attrs:{"src":"/RepoSense/images/code-panel.png","alt":"code panel","width":"468"}}),_v(" "),_c('p',[_v("The "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Code panel")]),_v(" allows users to see the code attributed to a specific author. Click on the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("")]),_v(" icon beside the author's name in the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Chart panel")]),_v(" to display the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Code panel")]),_v(" on the right.")]),_v(" "),_c('ul',[_c('li',[_v("The Code panel shows the files that contain the author's contributions, sorted by the number of lines written.")]),_v(" "),_c('li',[_v("Select the radio button to enable one of the following 2 filters. Note that only 1 of the 2 filters is active at any time.\n"),_c('ul',[_c('li',[_v("Type file path glob in glob filter to include files matching the glob expression.")]),_v(" "),_c('li',[_v("Select the checkboxes to include files of preferred file extensions.\nThe number right beside the file extension shows the total number of lines written by the author in such file extension files. In contrast, the number inside the parenthesis indicates the number of non-blank lines written by the author.")])])]),_v(" "),_c('li',[_v("Clicking the file title toggles the file content.")]),_v(" "),_c('li',[_v("Clicking the first icon beside the file title opens the history view of the file on the remote repository.")]),_v(" "),_c('li',[_v("Clicking the second icon beside the file title opens the blame view of the file on the remote repository.")]),_v(" "),_c('li',[_v("When using the code panel for a specific author, code attributed to the author is highlighted in green.\n"),_c('ul',[_c('li',[_v("When using the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("merge group")]),_v(" option with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("group by repos")]),_v(", the code panel will consist of multiple authors' contributions. Code attributed to these authors can be differentiated by the highlight colors of the code. The color legend is shown at the top of each file and consists only those authors that edited a particular file.")])])]),_v(" "),_c('li',[_v("Non-trivial code segments that the selected author has not written are hidden by default, but you can toggle them by clicking on the "),_c('span',{staticClass:"dimmed"},[_c('span',{staticClass:"fas fa-plus-circle",attrs:{"aria-hidden":"true"}})]),_v(" icon.")])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Changing binary files, such as images ("),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(".jpg")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(".png")]),_v("), applications ("),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(".exe")]),_v("), zip files ("),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(".zip")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(".rar")]),_v(") and certain document types ("),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(".docx")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(".pptx")]),_v("), is not counted towards the total number of lines of code contributed by an author.")])]),_v(" "),_c('h2',{attrs:{"id":"commits-panel"}},[_v("Commits panel"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#commits-panel","onclick":"event.stopPropagation()"}})]),_v(" "),_c('img',{attrs:{"src":"/RepoSense/images/commits-panel.png","alt":"commits panel","width":"468"}}),_v(" "),_c('p',[_v("The "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Commits panel")]),_v(" allows users to see the commits attributed to a specific author.")]),_v(" "),_c('ul',[_c('li',[_v("To view all commits attributed to an author, locate the author's ramp chart in the chart panel, and click on the "),_c('span',{staticClass:"dimmed"},[_c('span',{staticClass:"fas fa-list-ul",attrs:{"aria-hidden":"true"}})]),_v(" icon above the ramp chart.")]),_v(" "),_c('li',[_v("To view commits of a specific period, locate the author's ramp chart in the chart panel, hold down the "),_c('kbd',[_v("Ctrl")]),_v(" key ("),_c('kbd',[_v("⌘")]),_v(" in MacOS), and click on the start and end positions of the period (on the ramp chart) you want to view. "),_c('br')])]),_v(" "),_c('p',[_c('a',{attrs:{"href":"/RepoSense/images/opening-commits-panel.gif","target":"_self"}},[_c('img',{staticClass:"img-fluid",attrs:{"src":"/RepoSense/images/opening-commits-panel.gif","alt":"Opening commits panel"}})])]),_v(" "),_c('ul',[_c('li',[_v("The commits can be sorted by the date it was committed or by LoC.")]),_v(" "),_c('li',[_v("The tags of the commits will also be displayed on top if any. Clicking on a tag will direct you to the commit having that particular tag.")]),_v(" "),_c('li',[_v("The date range for the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Chart panel")]),_v(" can be updated by clicking on the \"Show ramp chart for this period\" below the name of the author.")]),_v(" "),_c('li',[_v("The ramp chart at the top of the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Commits panel")]),_v(" represents individual commits (not weekly or daily contributions).")]),_v(" "),_c('li',[_v("The commit messages body can be expanded or collapsed by clicking on the "),_c('span',{staticClass:"dimmed"},[_c('span',{staticClass:"fas fa-ellipsis-h",attrs:{"aria-hidden":"true"}})]),_v(" icon beside each commit message title.")]),_v(" "),_c('li',[_v("To promote and encourage the 50/72 rule for commit messages, a dotted vertical line will be shown for:\n"),_c('ul',[_c('li',[_v("Commit message subject that exceeds 50 characters.")]),_v(" "),_c('li',[_v("Commit message body after the 72nd character mark.")])])])])],1)])],1),_v(" "),_c('p'),_v(" "),_c('h1',{attrs:{"id":"2-generate-your-own-reports"}},[_c('thumbnail',{attrs:{"circle":"","background":"#006600","font-color":"white","size":"50"}},[_v("2")]),_v(" "),_c('strong',[_v("Generate")]),_v(" your own reports"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#2-generate-your-own-reports","onclick":"event.stopPropagation()"}})],1),_v(" "),_c('p',[_v("The next step is to generate your own RepoSense reports, either in your computer, or on one of the remote platforms we support.")]),_v(" "),_c('div',{staticClass:"indented-level0"},[_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('span',[_c('span',{staticClass:"glyphicon glyphicon-log-in",attrs:{"aria-hidden":"true"}})]),_v(" "),_c('strong',[_v("Generating reports")])])]},proxy:true}])},[_v(" "),_c('div',[_c('h1',{staticClass:"display-4",attrs:{"id":"generating-a-report"}},[_c('span',[_v("Generating a report")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#generating-a-report","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{staticClass:"lead"},[_c('p',[_v("Let's look at different ways to generate RepoSense reports.")])]),_v(" "),_c('ul',[_c('li',[_c('p',[_c('strong',[_v("If you have Java on your computer")]),_v(", the straight-forward way to generate a report is to use the RepoSense executable to generate the report locally on your computer, as explained in the "),_c('a',{attrs:{"href":"#generating-reports-locally"}},[_c('em',[_v("Generating reports locally")])]),_v(" section below.")])]),_v(" "),_c('li',[_c('p',[_c('strong',[_v("If you don't have Java on your computer or do not wish to run the executable on your computer")]),_v(", some alternatives are provided in the "),_c('a',{attrs:{"href":"#generating-reports-remotely"}},[_c('em',[_v("Generating reports remotely")])]),_v(" section below.")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("RepoSense is built to analyze any type of git repo, remote or local. It works best when analyzing remote repositories hosted on GitHub, GitLab or BitBucket.\nFor other types of repositories, external links are disabled.")])]),_v(" "),_c('h2',{attrs:{"id":"generating-reports-locally"}},[_v("Generating reports locally"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#generating-reports-locally","onclick":"event.stopPropagation()"}})]),_v(" "),_c('ol',[_c('li',[_c('p',[_c('strong',[_v("Ensure you have the prerequisites")]),_v(":")]),_v(" "),_c('ul',[_c('li',[_c('strong',[_v("Java 11")]),_v(" or later ("),_c('a',{attrs:{"href":"https://www.java.com/en/"}},[_v("download "),_c('span',{staticClass:"fas fa-download",attrs:{"aria-hidden":"true"}})]),_v(").")]),_v(" "),_c('li',[_c('strong',[_v("git "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("2.23")])]),_v(" or later on the command line. ("),_c('a',{attrs:{"href":"https://git-scm.com/downloads"}},[_v("download "),_c('span',{staticClass:"fas fa-download",attrs:{"aria-hidden":"true"}})]),_v(")."),_c('br'),_v(" run "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("git --version")]),_v(" in your OS terminal to confirm the version.")])])]),_v(" "),_c('li',[_c('p',[_c('strong',[_v("Download the latest JAR file")]),_v(" from our "),_c('a',{attrs:{"href":"https://github.com/reposense/RepoSense/releases/latest"}},[_v("releases")]),_v(".")])]),_v(" "),_c('li',[_c('p',[_c('strong',[_v("Generate a report")]),_v(": The simplest use case for RepoSense is to generate a report for the recent history of a repo."),_c('br'),_v("\ncommand: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar --repos LIST_OF_REPO_URLS --view")]),_c('br'),_v("\nExamples:")]),_v(" "),_c('ul',[_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar --repos https://github.com/reposense/RepoSense.git --view")]),_v(" (note the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(".git")]),_v(" at the end of the repo URL)")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar --repos https://github.com/reposense/RepoSense.git c:/myRepose/foo/bar --view")]),_v(" analyzes the two specified repos (one remote, one local).")])]),_v(" "),_c('p',[_v("The above commands will analyze the given repo(s) for commits done within "),_c('mark',[_v("the last month")]),_v(" and open the report in your default Browser.")])])]),_v(" "),_c('p',[_c('strong',[_v("To learn how to generate a report using "),_c('tooltip',{scopedSlots:_u([{key:"content",fn:function(){return [_v("e.g., generate a report for a different period, for specific file types, for specific authors, etc.")]},proxy:true}])},[_v("other settings")])],1),_v(", head over to the "),_c('a',{attrs:{"href":"/RepoSense/ug/customizingReports.html"}},[_c('em',[_c('strong',[_v("Customizing reports")])])]),_v(" section.")]),_v(" "),_c('h2',{attrs:{"id":"generating-reports-remotely"}},[_v("Generating reports remotely"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#generating-reports-remotely","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_v("You can generate a RepoSense report remotely without installing/running anything on your computer.")]),_v(" This is particularly useful when you are deciding whether to adopt RepoSense.")]),_v(" "),_c('p',[_c('strong',[_v("The easiest option is to use Netlify.")]),_v(" The instructions are given below.")]),_v(" "),_c('div',{staticClass:"indented-level0"},[_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('span',[_c('span',{staticClass:"glyphicon glyphicon-log-in",attrs:{"aria-hidden":"true"}})]),_v(" Appendix: "),_c('strong',[_v("Using RepoSense with Netlify → Setting up")])])]},proxy:true}])},[_v(" "),_c('div',[_c('box',{attrs:{"type":"warning","seamless":""}},[_c('p',[_v("Note that Netlify has a low limit for free tier users (only 300 "),_c('em',[_v("build minutes")]),_v(" per month as at June 2020 -- a single report generation can take 2-3 build minutes, longer if your report includes many/big repositories).")])]),_v(" "),_c('h2',{attrs:{"id":"setting-up"}},[_v("Setting up"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#setting-up","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('span',{staticClass:"badge bg-dark bigger-level0"},[_v("Step 1")]),_v(" "),_c('strong',[_v("Fork the "),_c('em',[_v("publish-RepoSense")]),_v(" repository")]),_v(" using this "),_c('a',{attrs:{"href":"https://github.com/RepoSense/publish-RepoSense/fork"}},[_v("link")]),_v(". Optionally, you can rename the fork to match your RepoSense report e.g., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("project-code-dashboard")]),_v(".")]),_v(" "),_c('p',[_c('span',{staticClass:"badge bg-dark bigger-level0"},[_v("Step 2")]),_v(" "),_c('strong',[_v("Set up Netlify for your fork")]),_v(" as described in this "),_c('a',{attrs:{"href":"https://www.netlify.com/blog/2016/09/29/a-step-by-step-guide-deploying-on-netlify/"}},[_v("guide")]),_v("."),_c('br'),_v(" "),_c('mark',[_v("You will need to use the following in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Step 5: Configure Your Settings")]),_v(" of that guide")]),_v(":")]),_v(" "),_c('ul',[_c('li',[_v("build command: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("pip install requests && ./run.sh")]),_c('br')]),_v(" "),_c('li',[_v("publish directory: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./reposense-report")])])]),_v(" "),_c('p',[_v("After Netlify finishes building the site, you should be able to see a dummy report at the URL of your Netlify site.")]),_v(" "),_c('p',[_c('span',{staticClass:"badge bg-dark bigger-level0"},[_v("Step 3")]),_v(" "),_c('strong',[_v("Generate the report you want")]),_v(" by updating the settings in your fork.")]),_v(" "),_c('ol',[_c('li',[_v("Go to the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("run.sh")]),_v(" file of your fork (on GitHub).")]),_v(" "),_c('li',[_v("Update the last line (i.e., the command for running RepoSense) to match the report you want to generate:"),_c('br'),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar --repos FULL_REPO_URL")]),_v(" (assuming you want to generate a default report for just one repo)"),_c('br'),_v("\ne.g., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar --repos https://github.com/reposense/RepoSense.git")]),_v(" ("),_c('mark',[_v("note the .git at the end of the repo URL")]),_v(")")]),_v(" "),_c('li',[_v("Commit the file. This will trigger Netlify to rebuild the report.")]),_v(" "),_c('li',[_v("Go to the URL of your Netlify site to see the updated RepoSense report (it might take about 2-5 minutes for Netlify to generate the report).")])])],1)])],1),_v(" "),_c('p'),_v(" "),_c('p',[_c('strong',[_v("You can also use the following options.")]),_v(" While they are more work to set up, they are more suitable as a permanent solution due to their generous free tier.")]),_v(" "),_c('div',{staticClass:"indented-level0"},[_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('span',[_c('span',{staticClass:"glyphicon glyphicon-log-in",attrs:{"aria-hidden":"true"}})]),_v(" Appendix: "),_c('strong',[_v("Using RepoSense with GitHub Actions → Setting up")])])]},proxy:true}])},[_v(" "),_c('div',[_c('div',{staticClass:"lead"},[_c('p',[_v("You can use "),_c('a',{attrs:{"href":"https://github.com/features/actions"}},[_c('em',[_v("GitHub Actions")])]),_v(" (together with other GitHub tools) to automate the generating and publishing of RepoSense reports.")])]),_v(" "),_c('h2',{attrs:{"id":"setting-up-2"}},[_v("Setting up"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#setting-up-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',[_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("The instructions below assume you are using GitHub pages to host your report.")])]),_v(" "),_c('p',[_c('span',{staticClass:"badge bg-dark bigger-level0"},[_v("Step 1")]),_v(" "),_c('strong',[_v("Fork the "),_c('em',[_v("publish-RepoSense")]),_v(" repository")]),_v(" using this "),_c('a',{attrs:{"href":"https://github.com/RepoSense/publish-RepoSense/fork"}},[_v("link")]),_v(". Optionally, you can rename the fork to match your RepoSense report e.g., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("project-code-dashboard")]),_v(".")])],1),_v(" "),_c('p',[_c('span',{staticClass:"badge bg-dark bigger-level0"},[_v("Step 2")]),_v(" "),_c('strong',[_v("Activate GitHub Actions on the forked repository:")])]),_v(" "),_c('ol',[_c('li',[_v("Go to the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Actions")]),_v(" page of your fork of the "),_c('a',{attrs:{"href":"https://github.com/reposense/publish-RepoSense"}},[_v("publish-RepoSense")]),_v(" repo.")]),_v(" "),_c('li',[_v("Click on the green button that says "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("I understand my workflows, go ahead and enable them")]),_v(" to enable GitHub Actions on your new repository.")])]),_v(" "),_c('p',[_c('span',{staticClass:"badge bg-dark bigger-level0"},[_v("Step 3")]),_v(" "),_c('strong',[_v("Update report configuration:")])]),_v(" "),_c('div',[_c('p',[_v("In your fork, edit "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("run.sh")]),_v(" (and if applicable, "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("group-config.csv")]),_v(") to customize the command line parameters or repositories to be analyzed.")]),_v(" "),_c('div',{staticClass:"indented-level0"},[_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('span',[_c('span',{staticClass:"glyphicon glyphicon-log-in",attrs:{"aria-hidden":"true"}})]),_v(" Appendix: "),_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("run.sh")]),_v(" format")])])]},proxy:true}])},[_v(" "),_c('div',[_c('h1',{staticClass:"display-4",attrs:{"id":"appendix-run-sh-format"}},[_c('span',[_v("Appendix: run.sh format")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#appendix-run-sh-format","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{staticClass:"lead"},[_c('p',[_c('a',{attrs:{"href":"https://github.com/reposense/publish-RepoSense/blob/master/run.sh"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("run.sh")])]),_v(" is a script used for automating RepoSense report generation.")])]),_v(" "),_c('h3',{attrs:{"id":"customizing-the-reposense-command"}},[_v("Customizing the RepoSense command"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#customizing-the-reposense-command","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("You can update the RepoSense command (i.e., the last line) in the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("run.sh")]),_v(" to match your needs.")]),_v(" "),_c('div',{staticClass:"indented-level0"},[_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('span',[_c('span',{staticClass:"glyphicon glyphicon-log-in",attrs:{"aria-hidden":"true"}})]),_v(" Appendix: "),_c('strong',[_v("CLI syntax reference")])])]},proxy:true}])},[_v(" "),_c('div',[_c('h1',{staticClass:"display-4",attrs:{"id":"appendix-cli-syntax-reference"}},[_c('span',[_v("Appendix: CLI syntax reference")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#appendix-cli-syntax-reference","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{staticClass:"lead"},[_c('p',[_v("The command "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar")]),_v(" takes several flags.")])]),_v(" "),_c('box',[_c('p',[_c('strong',[_v("Examples")]),_v(":")]),_v(" "),_c('p',[_v("An example of a command using most parameters:"),_c('br'),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar --repos https://github.com/reposense/RepoSense.git --output ./report_folder --since 31/1/2017 --until 31/12/2018 --formats java adoc xml --view --ignore-standalone-config --last-modified-date --timezone UTC+08 --find-previous-authors --analyze-authorship --originality-threshold 0.66")])]),_v(" "),_c('p',[_v("Same command as above but using most parameters in alias format:"),_c('br'),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar -r https://github.com/reposense/RepoSense.git -o ./report_folder -s 31/1/2017 -u 31/12/2018 -f java adoc xml -v -i -l -t UTC+08 -F -A -ot 0.66")])])]),_v(" "),_c('p',[_v("The section below provides explanations for each of the flags.")]),_v(" "),_c('h3',{attrs:{"id":"analyze-authorship-a"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--analyze-authorship")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-A")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#analyze-authorship-a","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--analyze-authorship")])]),_v(": Performs further analysis to distinguish between partial and full credit attribution for\nlines of code assigned to the author.")]),_v(" "),_c('ul',[_c('li',[_v("Default: this feature is turned "),_c('em',[_c('strong',[_v("off")])]),_v(" by default and the author will receive partial credits for all lines of\ncode, as the code lines are at least partial credit but may not qualify for full credit.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-A")]),_v(" (upper case)")]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--analyze-authorship")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-A")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("A darker background colour represents full credit, while a lighter background colour represents partial credit.")]),_v(" "),_c('p',[_v("If the code is attributed to a different author by the user via "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("@@author")]),_v(" tag, then the new author will be given\npartial credit.")])]),_v(" "),_c('h3',{attrs:{"id":"assets-a"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--assets")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-a")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#assets-a","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{attrs:{"id":"section-assets"}},[_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--assets ASSETS_DIRECTORY")])]),_v(": Specifies where to place assets for report generation.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ASSETS_DIRECTORY")]),_v(" The directory containing the assets files. A "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("favicon.ico")]),_v(" file can be placed here to customize the favicon of the dashboard, while a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("title.md")]),_v(" file can be placed to customize the "),_c('a',{attrs:{"href":"https://reposense.org/ug/customizingReports.html#add-a-title"}},[_v("title")]),_v(" of the report using "),_c('a',{attrs:{"href":"https://www.markdownguide.org/basic-syntax/"}},[_v("Markdown syntax")]),_v(".")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-a")])]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--assets ./assets")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-a ./assets")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("If "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--assets")]),_v(" is not specified, RepoSense looks for assets in the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./assets")]),_v(" directory.")])])])],1),_v(" "),_c('h3',{attrs:{"id":"config-c"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--config")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-c")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#config-c","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{attrs:{"id":"section-config"}},[_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--config CONFIG_DIRECTORY")])]),_v(": Specifies that config files located in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("CONFIG_DIRECTORY")]),_v(" should be used to customize the report.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("CONFIG_DIRECTORY")]),_v(" The directory containing the config files. Should contain a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(" file. Optionally, can contain an "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(" file or/and a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("group-config.csv")]),_v(" file or/and a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("report-config.json")]),_v(" file or/and a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("blurbs.md")]),_v(" file.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-c")])]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar --config ./config")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("Cannot be used with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repos")]),_v(". The "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repos")]),_v(" flag will take precedence over this flag.")]),_v(" "),_c('li',[_v("If both "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repos")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--config")]),_v(" are not specified, RepoSense looks for config files in the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./config")]),_v(" directory.")]),_v(" "),_c('li',[_v("Config files must follow "),_c('a',{attrs:{"href":"/RepoSense/ug/configFiles.html"}},[_v("this")]),_v(" format.")])])])],1),_v(" "),_c('h3',{attrs:{"id":"formats-f"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--formats")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-f")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#formats-f","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--formats LIST_OF_FORMATS")])]),_v(": Specifies which file extensions to be included in the analysis.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("LIST_OF_FORMATS")]),_v(" A space-separated list of file extensions that should be included in the analysis."),_c('br'),_v("\nDefault: all file formats")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-f")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--formats css fxml gradle")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-f css fxml gradle")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Binary file formats, such as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("jpg")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("png")]),_v(","),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("exe")]),_v(","),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("zip")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("rar")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("docx")]),_v(", and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("pptx")]),_v(", all will be labelled as the file type "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("binary")]),_v(" in the generated report.")])]),_v(" "),_c('h3',{attrs:{"id":"find-previous-authors-f"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--find-previous-authors")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-F")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#find-previous-authors-f","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--find-previous-authors")])]),_v(": Utilizes Git blame's ignore revisions functionality, RepoSense will attempt to blame the line changes caused by commits in the ignore commit list to the previous authors who altered those lines (if available).")]),_v(" "),_c('ul',[_c('li',[_v("Default: RepoSense will assume that no authors are responsible for the code changes in the lines altered by commits in the ignore commit list.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-F")]),_v(" (uppercase F)")]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--find-previous-authors")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-F")])])]),_v(" "),_c('h3',{attrs:{"id":"help-h"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--help")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-h")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#help-h","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--help")])]),_v(": Shows the help message.")]),_v(" "),_c('ul',[_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-h")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Cannot be used with any other flags. This flag takes precedence over all other flags.")])]),_v(" "),_c('h3',{attrs:{"id":"ignore-standalone-config-i"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--ignore-standalone-config")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-i")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#ignore-standalone-config-i","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--ignore-standalone-config")])]),_v(": Specifies that the standalone config file in the repo should be ignored.")]),_v(" "),_c('ul',[_c('li',[_v("Default: the standalone config file is not ignored")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-i")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--ignore-standalone-config")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-i")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("This flag overrides the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Ignore standalone config")]),_v(" field in the CSV config file.")])]),_v(" "),_c('h3',{attrs:{"id":"ignore-filesize-limit-i"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--ignore-filesize-limit")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-I")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#ignore-filesize-limit-i","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--ignore-filesize-limit")])]),_v(": Specifies that the file size limit (both default and user-defined) should be ignored during the analysis.")]),_v(" "),_c('ul',[_c('li',[_v("Default: the file size limit is not ignored")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-I")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--ignore-filesize-limit")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-I")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("All files are subject to a default file size limit or a custom size limit set by the user. Most files should not be\naffected by the default size limit. This flag can be useful for including files in your report that are affected by\nthe size limit. Note that this flag may result in large report sizes and/or slower report generation.")])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("This flag overrides the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Ignore file size limit")]),_v(" field in the CSV config file.")])]),_v(" "),_c('h3',{attrs:{"id":"last-modified-date-l"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--last-modified-date")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-l")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#last-modified-date-l","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--last-modified-date")])]),_v(": Specifies that the last modified date of each line of code should be added to "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("authorship.json")]),_v(".")]),_v(" "),_c('ul',[_c('li',[_v("Default: the last modified date of each line of code will not be added to "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("authorship.json")])]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-l")]),_v(" (lowercase L)")]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--last-modified-date")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-l")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("Cannot be used with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--shallow-cloning")]),_v(". This may result in an incorrect last modified date.")]),_v(" "),_c('li',[_v("The last modified dates will be in the same timezone specified with the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--timezone")]),_v(" flag.")])])]),_v(" "),_c('h3',{attrs:{"id":"originality-threshold-ot"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--originality-threshold")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-ot")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#originality-threshold-ot","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--originality-threshold [VALUE]")])]),_v(": Specifies the cut-off point for partial and full credit\nin "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--analyze-authorship")]),_v(". Author will be given full credit if their contribution exceeds this threshold, else partial\ncredit is given.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("VALUE")]),_v(" Optional. Acceptable range: [0.0, 1.0]."),_c('br'),_v("\nDefault: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("0.51")])]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-ot")])]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--originality-threshold 0.66")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-ot 0.66")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("Requires "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--analyze-authorship")]),_v(" flag.")]),_v(" "),_c('li',[_v("An author's contribution, or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("originality score")]),_v(", is calculated using Levenshtein Distance (Edit Distance) algorithm.\nWe compare the difference between current code line and its previous versions.")])])]),_v(" "),_c('h3',{attrs:{"id":"output-o"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--output")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-o")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#output-o","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--output OUTPUT_DIRECTORY")])]),_v(": Indicates where to save the report generated.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("OUTPUT_DIRECTORY")]),_v(" The location for the generated "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("reposense-report")]),_v(" folder."),_c('br'),_v("\nDefault: current directory")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-o")])]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--output ./foo")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-o ./foo")]),_v(" (the report will be in the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./foo/reposense-report")]),_v(" folder)")])]),_v(" "),_c('h3',{attrs:{"id":"period-p"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--period")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-p")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#period-p","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--period PERIOD")])]),_v(": Specifies the period of analysis window.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("PERIOD")]),_v(" The period of analysis window, in the format "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("nd")]),_v(" (for n days) or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("nw")]),_v(" (for n weeks). It is used to calculate end date if only start date is specified, or calculate end date if only start date is specified.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-p")])]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--period 30d")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--period 4w")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("If both start date and end date are not specified, the date of generating the report will be taken as the end date.")]),_v(" "),_c('li',[_v("May analyze the incorrect date range if used with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since d1")]),_v(". The program will throw a warning.")]),_v(" "),_c('li',[_v("Cannot be used with both "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--until")]),_v(". The program will throw an exception.")])])]),_v(" "),_c('h3',{attrs:{"id":"repo-repos-r"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repo")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repos")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-r")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#repo-repos-r","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repo REPO_LOCATION")])]),_v(": Specifies which repositories to analyze.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("REPO_LOCATION")]),_v(" A list of URLs or the disk location of the git repositories to analyze, separated by spaces.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-r")])]),_v(" "),_c('li',[_v("Examples:\n"),_c('ul',[_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repos https://github.com/reposense/RepoSense.git")])]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repo https://github.com/reposense/RepoSense.git c:/myRepose/foo/bar")]),_v(": analyzes the two specified repos (one remote, one local) and generates one report containing details of both.")])])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Cannot be used with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--config")]),_v(". This flag takes precedence over "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--config")]),_v(".")])]),_v(" "),_c('h3',{attrs:{"id":"shallow-cloning-s"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--shallow-cloning")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-S")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#shallow-cloning-s","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--shallow-cloning")])]),_v(": Clones repositories using Git's shallow cloning functionality, which can significantly reduce the time taken to clone large repositories. However, the flag should not be used for smaller repositories where the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(".git")]),_v(" file is smaller than 500 MB, as it would create overhead.")]),_v(" "),_c('ul',[_c('li',[_v("Default: RepoSense does not clone repositories using Git's shallow cloning functionality.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-S")]),_v(" (uppercase S)")]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--shallow-cloning")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-S")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Cannot be used with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--last-modified-date")]),_v(". This may result in an incorrect last modified date.")])]),_v(" "),_c('h3',{attrs:{"id":"since-s"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-s")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#since-s","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since START_DATE")])]),_v(": Specifies the start date for the period to be analyzed.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("START_DATE")]),_v(" The first day of the period to be analyzed, in the format "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("DD/MM/YYYY")]),_v("."),_c('br'),_v("\nDefault: one month before the current date")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-s")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since 21/10/2017")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-s 21/10/2017")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("If the start date is not specified, only commits made one month before the end date (if specified) or the date of generating the report, will be captured and analyzed.")]),_v(" "),_c('li',[_v("If "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("d1")]),_v(" is specified as the start date ("),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since d1")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-s d1")]),_v("), then the program will search for the earliest commit date of all repositories and use that as the start date.")]),_v(" "),_c('li',[_v("If "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("d1")]),_v(" is specified together with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--period")]),_v(", then the program will warn that the date range being analyzed may be incorrect.")])])]),_v(" "),_c('h3',{attrs:{"id":"timezone-t"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--timezone")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-t")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#timezone-t","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--timezone ZONE_ID")])]),_v(": Indicates the timezone to be used for the analysis.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ZONE_ID")]),_v(" The timezone in the format "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ZONE_ID[±hh[mm]]")]),_v("."),_c('br'),_v("\nDefault: system's default timezone")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-t")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--timezone UTC+08")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-t UTC-1030")])])]),_v(" "),_c('h3',{attrs:{"id":"until-u"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--until")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-u")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#until-u","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--until END_DATE")])]),_v(": Specifies the end date of the analysis period.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("END_DATE")]),_v(" The last date of the period to be analyzed, in the format "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("DD/MM/YYYY")]),_v("."),_c('br'),_v("\nDefault: current date")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-u")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--until 21/10/2017")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-u 21/10/2017")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Note: If the end date is not specified, the date of generating the report will be taken as the end date.")])]),_v(" "),_c('h3',{attrs:{"id":"version-v"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--version")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-V")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#version-v","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--version")])]),_v(": Shows the version of RepoSense.")]),_v(" "),_c('ul',[_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-V")]),_v(" (upper case)")])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Cannot be used with any other flags. This flag takes precedence over all other flags other than "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--help")]),_v(".")])]),_v(" "),_c('h3',{attrs:{"id":"view-v"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--view")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-v")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#view-v","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--view [REPORT_FOLDER]")])]),_v(": Specifies that the report should be opened in the default browser.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("REPORT_FOLDER")]),_v(" Optional. If specified, no analysis will be performed and the report specified by the argument will be opened."),_c('br'),_v("\nDefault: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./reposense-report")])]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-v")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--view")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-v")])])])],1)])],1),_v(" "),_c('p'),_v(" "),_c('h3',{attrs:{"id":"specifying-which-version-of-reposense-to-use"}},[_v("Specifying which version of RepoSense to use"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#specifying-which-version-of-reposense-to-use","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Depending on which version you wish to use for report generation, add one of the following flags to the line "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./get-reposense.py")]),_v(" in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("run.sh")]),_v(" (e.g., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./get-reposense.py --release")]),_v("):")]),_v(" "),_c('ul',[_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--release")]),_v(": Use the latest release (Stable)")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--master")]),_v(": Use the latest version of the master branch")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--tag TAG")]),_v(" (e.g. "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--tag v1.6.1")]),_v("): Use the version identified by the Git tag given")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--commit COMMIT")]),_v(" (e.g. "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--commit abc123")]),_v("): Use the version identified by the Git commit SHA given")])])])])],1),_v(" "),_c('p'),_v(" "),_c('div',{staticClass:"indented-level0"},[_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('span',[_c('span',{staticClass:"glyphicon glyphicon-log-in",attrs:{"aria-hidden":"true"}})]),_v(" Appendix: "),_c('strong',[_v("Config files format")])])]},proxy:true}])},[_v(" "),_c('div',[_c('h1',{staticClass:"display-4",attrs:{"id":"appendix-config-files-format"}},[_c('span',[_v("Appendix: Config files format")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#appendix-config-files-format","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{staticClass:"lead"},[_c('p',[_v("Given below are the details of the various config files used by RepoSense.")])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_c('strong',[_v("RepoSense ignores the order of column headers in the CSV config files. However, the spelling of the column headers must match the specified headers exactly, or the column would be ignored by RepoSense.")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_c('strong',[_v("A value in a config file is optional to provide unless it is specified as "),_c('span',{staticClass:"badge bg-danger"},[_v("mandatory")])]),_v(".")])]),_v(" "),_c('h2',{attrs:{"id":"repo-config-csv"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#repo-config-csv","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(" file contains repo-level config data.")]),_v(" Each row represents a repository's configuration ("),_c('a',{attrs:{"href":"/RepoSense/ug/repo-config.csv"}},[_v("example")]),_v(").")]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Column Name")]),_v(" "),_c('th',[_v("Explanation")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_v("Repository's Location "),_c('span',{staticClass:"badge bg-danger"},[_v("mandatory")])]),_v(" "),_c('td',[_v("The "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Remote Repo URL")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Disk Path")]),_v(" to the git repository e.g., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://github.com/foo/bar.git")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("C:\\Users\\user\\Desktop\\GitHub\\foo\\bar")])])]),_v(" "),_c('tr',[_c('td',[_v("Branch")]),_v(" "),_c('td',[_v("The branch to analyze in the target repository e.g., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("master")]),_v(". Default: the default branch of the repo")])]),_v(" "),_c('tr',[_c('td',[_v("File formats"),_c('sup',[_v("*+")])]),_v(" "),_c('td',[_v("The file extensions to analyze. Binary file formats, such as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("png")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("jpg")]),_v(", will be automatically labelled as the file type "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("binary")]),_v(" in the generated report. Default: all file formats")])]),_v(" "),_c('tr',[_c('td',[_v("Find Previous Authors")]),_v(" "),_c('td',[_v("Enter "),_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("yes")])]),_v(" to utilize Git blame's ignore revisions functionality, RepoSense will attempt to blame the line changes caused by commits in the ignore commit list to the previous authors who altered those lines (if available).")])]),_v(" "),_c('tr',[_c('td',[_v("Ignore Glob List"),_c('sup',[_v("*+")])]),_v(" "),_c('td',[_v("The list of file path globs to ignore during analysis for each author e.g., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("test/**;temp/**")]),_v(". Refer to the "),_c('a',{attrs:{"href":"https://docs.oracle.com/javase/tutorial/essential/io/fileOps.html#glob"}},[_c('em',[_v("glob format")])]),_v(" for the path glob syntax.")])]),_v(" "),_c('tr',[_c('td',[_v("Ignore standalone config")]),_v(" "),_c('td',[_v("To ignore the standalone config file (if any) in target repository, enter "),_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("yes")])]),_v(". If the cell is empty, the standalone config file in the repo (if any) will take precedence over configurations provided in the csv files.")])]),_v(" "),_c('tr',[_c('td',[_v("Ignore Commits List"),_c('sup',[_v("*+")])]),_v(" "),_c('td',[_v("The list of commits to ignore during analysis. For accurate results, the commits should be provided with their full hash. Additionally, a range of commits can be specified using the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("..")]),_v(" notation e.g. "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("abc123..def456")]),_v(" (both inclusive).")])]),_v(" "),_c('tr',[_c('td',[_v("Ignore Authors List"),_c('sup',[_v("*+")])]),_v(" "),_c('td',[_v("The list of authors to ignore during analysis. Authors should be specified by their "),_c('a',{attrs:{"href":"#a-note-about-git-author-name"}},[_v("Git Author Name")]),_v(".")])]),_v(" "),_c('tr',[_c('td',[_v("Shallow Cloning")]),_v(" "),_c('td',[_v("Enter "),_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("yes")])]),_v(" to clone the repository using Git's shallow cloning functionality. This option can significantly reduce the time taken to clone large repositories. However, the option should ideally be disabled for smaller repositories where the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(".git")]),_v(" file is smaller than 500 MB, as it would create overhead.")])]),_v(" "),_c('tr',[_c('td',[_v("File Size Limit"),_c('sup',[_v("+")])]),_v(" "),_c('td',[_v("Enter a file size limit for the repository in bytes as a single number without units (for a size limit of 1MB for example, enter 1000000). This file size limit will override the default file size limit (500KB). Files exceeding the file size limit will be marked as ignored and only the file name and line count will be reflected in the report.")])]),_v(" "),_c('tr',[_c('td',[_v("Ignore File Size Limit")]),_v(" "),_c('td',[_v("Enter "),_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("yes")])]),_v(" to ignore both the default file size limit and the file size limit possibly set by the user in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(".")])]),_v(" "),_c('tr',[_c('td',[_v("Skip Ignored File Analysis")]),_v(" "),_c('td',[_v("Enter "),_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("yes")])]),_v(" to ignore analysis of files exceeding the file size limit entirely. If file analysis is skipped, all information about the file will be omitted from the generated report. This option can significantly improve report generation time.")])])])])]),_c('box',{attrs:{"type":"info","seamless":""}},[_v("\nThe Shallow Cloning option is incompatible with the \"--last-modified-date\" CLI flag.\n")]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_v("\nIf Ignore File Size Limit is yes, the File Size Limit and Skip Ignored File Analysis columns are ignored.\n")]),_v(" "),_c('p',[_c('sup',[_v("* "),_c('strong',[_v("Multi-value column")]),_v(": multiple values can be entered in this column using a semicolon "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(";")]),_v(" as the separator.")]),_c('br'),_v(" "),_c('sup',[_v("+ "),_c('strong',[_v("Overrideable column")]),_v(": prepend with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("override:")]),_v(" to use entered value(s) instead of value(s) from standalone config.")])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("When using "),_c('a',{attrs:{"href":"#config-json-standalone-config-file"}},[_v("standalone config")]),_v(" (if it is not ignored), it is possible to override specific values from the standalone config by prepending the entered value with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("override:")]),_v(".")])]),_v(" "),_c('h2',{attrs:{"id":"author-config-csv"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#author-config-csv","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Optionally, you can use an "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(" (which should be in the same directory as the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(" file) to provide more details about the authors to analyze ("),_c('a',{attrs:{"href":"/RepoSense/ug/author-config.csv"}},[_v("example")]),_v("). It should contain the following columns:")]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Column Name")]),_v(" "),_c('th',[_v("Explanation")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_v("Repository's Location"),_c('sup',[_v("*")])]),_v(" "),_c('td',[_v("Same as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(". Default: all the repos in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(".")])]),_v(" "),_c('tr',[_c('td',[_v("Branch")]),_v(" "),_c('td',[_v("The branch to analyze for this author, e.g., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("master")]),_v(". Default: the author will be bound to all the repos in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(" that has the same repo's location, regardless of branch.")])]),_v(" "),_c('tr',[_c('td',[_v("Author's Git Host ID"),_c('sup',[_v("#")]),_v(" "),_c('span',{staticClass:"badge bg-danger"},[_v("mandatory")])]),_v(" "),_c('td',[_v("Username of the target author's profile on GitHub, GitLab or Bitbucket, e.g."),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("JohnDoe")]),_v(".")])]),_v(" "),_c('tr',[_c('td',[_v("Author's Emails"),_c('sup',[_v("*")])]),_v(" "),_c('td',[_v("Associated emails of the author. For GitHub users, this can be found in your "),_c('a',{attrs:{"href":"https://github.com/settings/emails"}},[_v("GitHub settings")]),_v(".")])]),_v(" "),_c('tr',[_c('td',[_v("Author's Display Name")]),_v(" "),_c('td',[_v("The name to display for the author. Default: author's username.")])]),_v(" "),_c('tr',[_c('td',[_v("Author's Git Author Name"),_c('sup',[_v("*")])]),_v(" "),_c('td',[_v("The meaning of "),_c('em',[_v("Git Author Name")]),_v(" is explained in "),_c('a',{attrs:{"href":"#a-note-about-git-author-name"}},[_c('em',[_v("A note about git author name")])]),_v(".")])]),_v(" "),_c('tr',[_c('td',[_v("Ignore Glob List"),_c('sup',[_v("*")])]),_v(" "),_c('td',[_v("Files to ignore for this author, in addition to files ignored by the patterns specified in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(". The path glob syntax is the same as that of Ignore Glob List in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(".")])])])])]),_c('p',[_c('sup',[_v("* "),_c('strong',[_v("Multi-value column")]),_v(": multiple values can be entered in this column using a semicolon "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(";")]),_v(" as the separator.")]),_v(" "),_c('br'),_v(" "),_c('sup',[_v("# For backward compatibility, "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Author's GitHub ID")]),_v(" is still accepted as the header in place of "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Author's Git Host ID")]),_v(".")])]),_v(" "),_c('p',[_v("If "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(" is not given and the repo has not provided author details in a standalone config file, all the authors of the repositories within the date range specified (if any) will be analyzed.")]),_v(" "),_c('p',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(" has some advanced syntax that can help to reduce duplication of the author's information. The syntax guide is given below:")]),_v(" "),_c('div',{staticClass:"indented-level0"},[_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('span',[_c('span',{staticClass:"glyphicon glyphicon-log-in",attrs:{"aria-hidden":"true"}})]),_v(" Appendix: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(" advanced syntax")])]},proxy:true}])},[_v(" "),_c('div',[_c('h1',{staticClass:"display-4",attrs:{"id":"appendix-author-config-csv-advanced-syntax"}},[_c('span',[_v("Appendix: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(" advanced syntax")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#appendix-author-config-csv-advanced-syntax","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{staticClass:"lead"},[_c('p',[_v("Given below are the advanced syntax available for "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(".")])]),_v(" "),_c('h2',{attrs:{"id":"multiple-repository-s-location-per-author"}},[_v("Multiple "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repository's Location")]),_v(" per author"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#multiple-repository-s-location-per-author","onclick":"event.stopPropagation()"}})]),_v(" "),_c('h4',{attrs:{"id":"specifying-multiple-repository-s-location"}},[_v("Specifying multiple "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repository's Location")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#specifying-multiple-repository-s-location","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("To specify multiple "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repository's Location")]),_v(" in a single row, we can use a semicolon "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(";")]),_v(" as a separator.")]),_v(" "),_c('p',[_v("Below is an example:")]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Repository's Location")]),_v(" "),_c('th',[_v("Branch")]),_v(" "),_c('th',[_v("Author's Git Host ID")]),_v(" "),_c('th',[_v("... Hidden columns")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://github.com/reposense/RepoSense.git;https://github.com/MarkBind/markbind.git")])]),_v(" "),_c('td',[_v("master")]),_v(" "),_c('td',[_v("sikai00")]),_v(" "),_c('td',[_v("--")])])])])]),_c('p',[_v("We have now furnished author details for both repositories in a single row, instead of having two individual rows per "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repository's Location")]),_v(".")]),_v(" "),_c('br'),_v(" "),_c('h4',{attrs:{"id":"specifying-repository-s-location-with-one-or-more-specific-branches"}},[_v("Specifying "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repository's Location")]),_v(" with one or more specific branches"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#specifying-repository-s-location-with-one-or-more-specific-branches","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("To list out one or more branches for a particular "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repository's Location")]),_v(", we can use a pipe "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("|")]),_v(" separator to demarcate the different branches.")]),_v(" "),_c('p',[_v("Below is an example:")]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Repository's Location")]),_v(" "),_c('th',[_v("Branch")]),_v(" "),_c('th',[_v("Author's Git Host ID")]),_v(" "),_c('th',[_v("... Hidden columns")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://github.com/reposense/RepoSense.git~master|release|cypress")])]),_v(" "),_c('td',[_v("master")]),_v(" "),_c('td',[_v("sikai00")]),_v(" "),_c('td',[_v("--")])])])])]),_c('p',[_v("We have now provided author details for three different branches in a single repo, using a single row.")]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("The branch specified through the delimiter syntax will take precedence over the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Branch")]),_v(" column.")])]),_v(" "),_c('h2',{attrs:{"id":"using-github-branch-url-as-repository-s-location"}},[_v("Using GitHub branch URL as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repository's Location")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#using-github-branch-url-as-repository-s-location","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("We can also use GitHub branch URL as copied from the address bar directly, to be able to quickly use the URL to specify the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repository's Location")]),_v(" and a specific "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Branch")]),_v(" at the same time.")]),_v(" "),_c('p',[_v("Below is an example:")]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Repository's Location")]),_v(" "),_c('th',[_v("Branch")]),_v(" "),_c('th',[_v("Author's Git Host ID")]),_v(" "),_c('th',[_v("... Hidden columns")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://github.com/reposense/RepoSense/tree/release")])]),_v(" "),_c('td'),_v(" "),_c('td',[_v("sikai00")]),_v(" "),_c('td',[_v("--")])])])])]),_c('p',[_v("There is no need to specify the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Branch")]),_v(" column now, as we have specified it through the GitHub branch URL.")]),_v(" "),_c('box',{attrs:{"type":"warning","seamless":""}},[_c('p',[_v("GitLab and BitBucket branch URL are not supported at the moment.")])]),_v(" "),_c('h2',{attrs:{"id":"combining-the-advanced-syntax"}},[_v("Combining the advanced syntax"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#combining-the-advanced-syntax","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("It is possible to combine the above-mentioned advanced syntax. By doing so, we can go from:")]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Repository's Location")]),_v(" "),_c('th',[_v("Branch")]),_v(" "),_c('th',[_v("Author's Git Host ID")]),_v(" "),_c('th',[_v("... Hidden columns")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://github.com/MarkBind/markbind/tree/vue3-migration")])]),_v(" "),_c('td'),_v(" "),_c('td',[_v("sikai00")]),_v(" "),_c('td',[_v("--")])]),_v(" "),_c('tr',[_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://github.com/reposense/RepoSense.git")])]),_v(" "),_c('td',[_v("master")]),_v(" "),_c('td',[_v("sikai00")]),_v(" "),_c('td',[_v("--")])]),_v(" "),_c('tr',[_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://github.com/reposense/RepoSense.git")])]),_v(" "),_c('td',[_v("cypress")]),_v(" "),_c('td',[_v("sikai00")]),_v(" "),_c('td',[_v("--")])])])])]),_c('p',[_v("to:")]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Repository's Location")]),_v(" "),_c('th',[_v("Branch")]),_v(" "),_c('th',[_v("Author's Git Host ID")]),_v(" "),_c('th',[_v("... Hidden columns")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://github.com/MarkBind/markbind/tree/vue3-migration;https://github.com/reposense/RepoSense.git~master|cypress")])]),_v(" "),_c('td'),_v(" "),_c('td',[_v("sikai00")]),_v(" "),_c('td',[_v("--")])])])])]),_c('br')],1)])],1),_v(" "),_c('p'),_v(" "),_c('h2',{attrs:{"id":"group-config-csv"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("group-config.csv")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#group-config-csv","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Optionally, you can provide a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("group-config.csv")]),_v("(which should be in the same directory as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(" file) to provide details on any custom groupings for files in specified repositories ("),_c('a',{attrs:{"href":"/RepoSense/ug/group-config.csv"}},[_v("example")]),_v("). It should contain the following columns:")]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Column Name")]),_v(" "),_c('th',[_v("Explanation")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_v("Repository's Location")]),_v(" "),_c('td',[_v("Same as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(". Default: all the repos in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")])])]),_v(" "),_c('tr',[_c('td',[_v("Group Name "),_c('span',{staticClass:"badge bg-danger"},[_v("mandatory")])]),_v(" "),_c('td',[_v("Name of the group, e.g.,"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("test")]),_v(".")])]),_v(" "),_c('tr',[_c('td',[_v("Globs * "),_c('span',{staticClass:"badge bg-danger"},[_v("mandatory")])]),_v(" "),_c('td',[_v("The list of file path globs to include for specified group, e.g.,"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("**/test/*;**.java")]),_v(".")])])])])]),_c('p',[_c('sup',[_v("* "),_c('strong',[_v("Multi-value column")]),_v(": multiple values can be entered in this column using a semicolon "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(";")]),_v(" as the separator.")])]),_v(" "),_c('p',[_v("Note that a file in a given repository should only be tagged to one group. "),_c('br'),_v("\ne.g.: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("example.java")]),_v(" in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("example-repo")]),_v(" can either be in the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("test")]),_v(" group or the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("code")]),_v(" group, but not in both "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("test")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("code")]),_v(" group. If multiple groups are specified for a given file, the latter group (i.e., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("code")]),_v(" group) is set for the file.")]),_v(" "),_c('h2',{attrs:{"id":"report-config-json"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("report-config.json")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#report-config-json","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("You can optionally use "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("report-config.json")]),_v(" to customize report generation by providing the following information. ("),_c('a',{attrs:{"href":"/RepoSense/ug/report-config.json"}},[_v("example")]),_v(")")]),_v(" "),_c('p',[_c('strong',[_v("Fields to provide")]),_v(":")]),_v(" "),_c('ul',[_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("title")]),_v(": Title of the generated report, which is also the title of the deployed dashboard. Default: \"RepoSense Report\"")])]),_v(" "),_c('div',{attrs:{"id":"section-standalone"}},[_c('h2',{attrs:{"id":"config-json-standalone-config-file"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("config.json")]),_v(" (standalone config file)"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#config-json-standalone-config-file","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Repo owners can provide the following additional information to RepoSense using a config file that we call the "),_c('strong',[_c('em',[_v("standalone config file")])]),_v(":")]),_v(" "),_c('ul',[_c('li',[_v("which files/authors/commits to analyze/omit")]),_v(" "),_c('li',[_v("which git and git host usernames belong to which authors")]),_v(" "),_c('li',[_v("the display of an author")])]),_v(" "),_c('p',[_v("To use this feature, add a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("_reposense/config.json")]),_v(" to the root of your repo using the format in the example below ("),_c('a',{attrs:{"href":"https://github.com/reposense/RepoSense/blob/master/_reposense/config.json"}},[_v("another example")]),_v(") and "),_c('strong',[_v("commit it")]),_v(" (reason: RepoSense can see committed code only):")]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"no-line-numbers hljs json"}},[_c('span',[_v("{\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"ignoreGlobList\"")]),_v(": ["),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"about-us/**\"")]),_v(", "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"**index.html\"")]),_v("],\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"formats\"")]),_v(": ["),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"html\"")]),_v(", "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"css\"")]),_v("],\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"ignoreCommitList\"")]),_v(": ["),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"90018e49f129ce7e0abdc8b18e91c9813588c601\"")]),_v(", "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"67890def\"")]),_v(", "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"abc123..def456\"")]),_v("],\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"ignoreAuthorList\"")]),_v(": ["),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"charlie\"")]),_v("],\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"authors\"")]),_v(":\n")]),_c('span',[_v(" [\n")]),_c('span',[_v(" {\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"gitId\"")]),_v(": "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"alice\"")]),_v(",\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"emails\"")]),_v(": ["),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"alice@example.com\"")]),_v(", "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"alicet@example.com\"")]),_v("],\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"displayName\"")]),_v(": "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"Alice T.\"")]),_v(",\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"authorNames\"")]),_v(": ["),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"AT\"")]),_v(", "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"A\"")]),_v("],\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"ignoreGlobList\"")]),_v(": ["),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"**.css\"")]),_v("]\n")]),_c('span',[_v(" },\n")]),_c('span',[_v(" {\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"gitId\"")]),_v(": "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"bob\"")]),_v("\n")]),_c('span',[_v(" }\n")]),_c('span',[_v(" ]\n")]),_c('span',[_v("}\n")])])]),_c('p',[_v("Note: all fields are optional unless specified otherwise.")]),_v(" "),_c('p',[_c('strong',[_v("Fields to provide "),_c('em',[_v("repository-level")]),_v(" info")]),_v(":")]),_v(" "),_c('ul',[_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ignoreGlobList")]),_v(": Folders/files to ignore, specified using the "),_c('a',{attrs:{"href":"https://docs.oracle.com/javase/tutorial/essential/io/fileOps.html#glob"}},[_c('em',[_v("glob format")])]),_v(".")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("formats")]),_v(": File formats to analyze. Binary file formats, such as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("png")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("jpg")]),_v(", will be automatically labelled as the file type "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("binary")]),_v(" in the generated report. Default: all file formats")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ignoreCommitList")]),_v(": The list of commits to ignore during analysis. For accurate results, the commits should be provided with their full hash. Additionally, a range of commits can be specified using the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("..")]),_v(" notation e.g. "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("abc123..def456")]),_v(" (both inclusive).")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ignoreAuthorList")]),_v(": The list of authors to ignore during analysis. Authors specified in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("authors")]),_v(" field or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(" will be also be omitted if they are in this list. Authors should be specified by their "),_c('a',{attrs:{"href":"#a-note-about-git-author-name"}},[_v("Git Author Name")]),_v(".")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("fileSizeLimit")]),_v(": A file size limit for the repository in bytes as a single number without units, that will override the default file size limit. If not specified, the default file size limit will continue to be used.")])]),_v(" "),_c('p',[_c('strong',[_v("Fields to provide "),_c('em',[_v("author-level")]),_v(" info")]),_v(":"),_c('br'),_v("\nNote: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("authors")]),_v(" field should contain "),_c('em',[_v("all")]),_v(" authors that should be captured in the analysis.")]),_v(" "),_c('ul',[_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("gitId")]),_v(": Username of the author. "),_c('span',{staticClass:"badge bg-danger"},[_v("mandatory")]),_v(" field.")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("emails")]),_v(": Associated git emails of the author. For GitHub, this can be found in your "),_c('a',{attrs:{"href":"https://github.com/settings/emails"}},[_v("GitHub settings")]),_v(".")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("displayName")]),_v(": Name to display on the report for this author.")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("authorNames")]),_v(": Git Author Name(s) used in the author's commits. By default, RepoSense assumes an author would use their remote Git Host username as the Git username too. The meaning of "),_c('em',[_v("Git Author Name")]),_v(" is explained in "),_c('a',{attrs:{"href":"#a-note-about-git-author-name"}},[_c('em',[_v("A note about git author name")])]),_v(".")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ignoreGlobList")]),_v(": "),_c('em',[_v("Additional")]),_v(" (i.e. on top of the repo-level "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ignoreGlobList")]),_v(") folders/files to ignore for a specific author. The path glob syntax is specified by the "),_c('a',{attrs:{"href":"https://docs.oracle.com/javase/tutorial/essential/io/fileOps.html#glob"}},[_c('em',[_v("glob format")])]),_v(". In the example above, the actual "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ignoreGlobList")]),_v(" for "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("alice")]),_v(" would be "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("[\"about-us/**\", \"**index.html\", \"**.css\"]")]),_v(".")])]),_v(" "),_c('p',[_v("To verify your standalone configuration is as intended, add the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("_reposense/config.json")]),_v(" to your local copy of repo and run RepoSense against it as follows:"),_c('br')]),_v(" "),_c('ul',[_c('li',[_v("Format: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar --repo LOCAL_REPO_LOCATION")]),_v(" "),_c('br')]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar --repo c:/myRepose/foo/bar")]),_c('br'),_v("\nAfter that, view the report to see if the configuration you specified in the config file is being reflected correctly in the report.")])]),_v(" "),_c('h2',{attrs:{"id":"a-note-about-git-author-name"}},[_v("A note about git author name"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#a-note-about-git-author-name","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Git Author Name")]),_v(" refers to the customizable author's display name set in the local "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(".gitconfig")]),_v(" file. For example, in the Git Log's display:")]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"no-line-numbers hljs"}},[_c('span',[_v("...\n")]),_c('span',[_v("commit cd7f610e0becbdf331d5231887d8010a689f87c7\n")]),_c('span',[_v("Author: ConfiguredAuthorName \n")]),_c('span',[_v("Date: Fri Feb 9 19:14:41 2018 +0800\n")]),_c('span',[_v("\n")]),_c('span',[_v(" Make some changes to show my new author's name\n")]),_c('span',[_v("\n")]),_c('span',[_v("commit e3f699fd4ef128eebce98d5b4e5b3bb06a512f49\n")]),_c('span',[_v("Author: ActualGitHostId \n")]),_c('span',[_v("Date: Fri Feb 9 19:13:13 2018 +0800\n")]),_c('span',[_v("\n")]),_c('span',[_v(" Initial commit\n")]),_c('span',[_v(" ...\n")])])]),_c('p',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ActualGitHostId")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ConfiguredAuthorName")]),_v(" are both "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Git Author Name")]),_v(" of the same author."),_c('br'),_v("\nTo find the author name that you are currently using for your current git repository, run the following command within your git repository:")]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"no-line-numbers hljs"}},[_c('span',[_v("git config user.name\n")])])]),_c('p',[_v("To set the author name to the value you want (e.g., to set it to your GitHub username) for your current git repository, you can use the following command ("),_c('a',{attrs:{"href":"https://www.git-tower.com/learn/git/faq/change-author-name-email"}},[_v("more info")]),_v("):")]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"no-line-numbers hljs"}},[_c('span',[_v("git config user.name \"YOUR_AUTHOR_NAME”\n")])])]),_c('p',[_v("To set the author name to use a default value you want for future git repositories, you can use the following command:")]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"no-line-numbers hljs"}},[_c('span',[_v("git config --global user.name \"YOUR_AUTHOR_NAME”\n")])])]),_c('p',[_v("RepoSense expects the Git Author Name to be the same as author's username on the Git hosting platform (GitHub, GitLab, BitBucket). If an author's "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Git Author Name")]),_v(" is different from their username on the Git hosting platform, the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Git Author Name")]),_v(" needs to be specified in the standalone config file. If the author has more than one "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Git Author Name")]),_v(", multiple values can be entered too.")]),_v(" "),_c('box',{attrs:{"type":"warning","seamless":""}},[_c('p',[_v("Note: Symbols such as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("\"")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("!")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("/")]),_v(" etc. in your author name will be omitted, which may reduce the accuracy of the analysis if 2 names in the repository are approximately similar.")])])],1),_v(" "),_c('div',{attrs:{"id":"section-blurbs"}},[_c('h2',{attrs:{"id":"blurbs-md"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("blurbs.md")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#blurbs-md","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("You can optionally use "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("blurbs.md")]),_v(" to add blurbs in Markdown syntax for repository branches. These blurbs will be seen when grouping by "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repo/Branch")]),_v(". ("),_c('a',{attrs:{"href":"https://github.com/reposense/RepoSense/blob/master/docs/ug/blurbs.md"}},[_v("example")]),_v(")")]),_v(" "),_c('p',[_c('strong',[_v("Format")]),_v(":")]),_v(" "),_c('ul',[_c('li',[_v("First line in section: Link to the repository branch.")]),_v(" "),_c('li',[_v("Second line onwards: Blurb content.")]),_v(" "),_c('li',[_v("Delimiter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("")]),_v(". Everything on the line after the delimiter will be ignored.")])])])],1)])],1),_v(" "),_c('p')]),_v(" "),_c('p',[_c('span',{staticClass:"badge bg-dark bigger-level0"},[_v("Step 4")]),_v(" "),_c('strong',[_v("View the generated report:")])]),_v(" "),_c('p',[_v("To access your regenerated RepoSense report, go to the settings of your fork in GitHub, under "),_c('strong',[_v("GitHub Pages")]),_v(" section, look for "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Your site is published at [LINK]")]),_v(". It should look something like "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://[YOUR_GITHUB_ID].github.io/publish-RepoSense")]),_v(".\n"),_c('a',{attrs:{"href":"/RepoSense/images/publishingguide-githubsetting.jpg","target":"_self"}},[_c('img',{staticClass:"img-fluid",attrs:{"src":"/RepoSense/images/publishingguide-githubsetting.jpg","alt":"GitHub Setting","title":"GitHub Setting"}})])]),_v(" "),_c('box',{attrs:{"type":"tip","seamless":""}},[_c('p',[_v("There is also a published GitHub Action ("),_c('a',{attrs:{"href":"https://github.com/marketplace/actions/reposense-action"}},[_v("reposense-action")]),_v(") that can be used to generate and publish RepoSense reports. It is especially convenient for users who wish to skip the forking and setting up of a separate repository. For more information, refer to the "),_c('a',{attrs:{"href":"https://github.com/marketplace/actions/reposense-action#usage"}},[_v("usage description")]),_v(".")])])],1)])],1),_v(" "),_c('p'),_v(" "),_c('div',{staticClass:"indented-level0"},[_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('span',[_c('span',{staticClass:"glyphicon glyphicon-log-in",attrs:{"aria-hidden":"true"}})]),_v(" Appendix: "),_c('strong',[_v("Using RepoSense with Travis → Setting up")])])]},proxy:true}])},[_v(" "),_c('div',[_c('div',{staticClass:"lead"},[_c('p',[_v("You can use the CI tool Travis to automate generating and publishing of RepoSense reports.")])]),_v(" "),_c('h2',{attrs:{"id":"setting-up-3"}},[_v("Setting up"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#setting-up-3","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{attrs:{"id":"section-fork-token"}},[_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("The instructions below assume you are using GitHub pages to host your report.")])]),_v(" "),_c('p',[_c('span',{staticClass:"badge bg-dark bigger-level0"},[_v("Step 1")]),_v(" "),_c('strong',[_v("Fork the "),_c('em',[_v("publish-RepoSense")]),_v(" repository")]),_v(" using this "),_c('a',{attrs:{"href":"https://github.com/RepoSense/publish-RepoSense/fork"}},[_v("link")]),_v(". Optionally, you can rename the fork to match your RepoSense report e.g., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("project-code-dashboard")]),_v(".")])],1),_v(" "),_c('p',[_c('span',{staticClass:"badge bg-dark bigger-level0"},[_v("Step 2")]),_v(" "),_c('strong',[_v("Generate a "),_c('em',[_v("personal access token")]),_v(" or "),_c('em',[_v("deploy key")]),_v(" on GitHub")]),_v(" as explained in the panel below.")]),_v(" "),_c('div',{staticClass:"indented-level0"},[_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('span',[_c('span',{staticClass:"glyphicon glyphicon-log-in",attrs:{"aria-hidden":"true"}})]),_v(" Granting write access on GitHub")])]},proxy:true}])},[_v(" "),_c('div',[_c('h2',{attrs:{"id":"granting-write-access-to-a-repository"}},[_v("Granting write-access to a repository"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#granting-write-access-to-a-repository","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("We recommend using a "),_c('a',{attrs:{"href":"https://github.blog/2013-05-16-personal-api-tokens/"}},[_v("personal access token")]),_v(" if aiming for the ease of setup and "),_c('a',{attrs:{"href":"https://developer.github.com/v3/guides/managing-deploy-keys/#deploy-keys"}},[_v("deploy key")]),_v(" if aiming for enhanced security.")]),_v(" "),_c('h3',{attrs:{"id":"if-you-wish-to-use-personal-access-token"}},[_v("If you wish to use "),_c('em',[_v("personal access token")]),_v(":"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#if-you-wish-to-use-personal-access-token","onclick":"event.stopPropagation()"}})]),_v(" "),_c('ol',[_c('li',[_c('strong',[_v("Create a "),_c('em',[_v("personal access token")])]),_v(" by following this "),_c('a',{attrs:{"href":"https://help.github.com/articles/creating-a-personal-access-token-for-the-command-line/"}},[_v("guide")]),_v(" and give only "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("public_repo")]),_v(" permission.")]),_v(" "),_c('li',[_c('strong',[_v("Copy the token")]),_v(" for later use.")])]),_v(" "),_c('h3',{attrs:{"id":"if-you-wish-to-use-deploy-key"}},[_v("If you wish to use "),_c('em',[_v("deploy key")]),_v(":"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#if-you-wish-to-use-deploy-key","onclick":"event.stopPropagation()"}})]),_v(" "),_c('box',{attrs:{"type":"info"},scopedSlots:_u([{key:"icon",fn:function(){return [_c('span',{staticClass:"fab fa-windows",attrs:{"aria-hidden":"true"}})]},proxy:true}])},[_v(" "),_c('p',[_v("[Windows users] "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ssh-keygen")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("base64")]),_v(" are accessible using "),_c('a',{attrs:{"href":"https://gitforwindows.org/"}},[_v("Git Bash")]),_v(".")])]),_v(" "),_c('ol',[_c('li',[_c('strong',[_v("Create a public-private key pair")]),_v(" (without a passphrase) using the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ssh-keygen")]),_v(". "),_c('br'),_v("\ni.e., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ssh-keygen -t ecdsa -b 521 -f id_reposense -q -N \"\"")])]),_v(" "),_c('li',[_c('strong',[_v("Create a deploy key")]),_v(" as follows:\n"),_c('ol',[_c('li',[_v("Go to the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("settings")]),_v(" page of your publish-RepoSense fork")]),_v(" "),_c('li',[_v("Click on the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Deploy keys")]),_v(" item in the navigation menu in that page")]),_v(" "),_c('li',[_v("Click on the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Add deploy key")]),_v(" button and create a new deploy key with the contents of "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("id_reposense.pub")]),_v(".")])])]),_v(" "),_c('li',[_c('strong',[_v("Copy the private key")]),_v(" in base64 encoded format for later use. "),_c('br'),_v("\ni.e., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("cat id_reposense | base64 -w 0")])])])],1)])],1),_v(" "),_c('p'),_v(" "),_c('p',[_c('span',{staticClass:"badge bg-dark bigger-level0"},[_v("Step 3")]),_v(" "),_c('strong',[_v("Login to "),_c('a',{attrs:{"href":"https://travis-ci.org/"}},[_v("Travis-CI")]),_v(".")]),_v(" You may have to sign up first.")]),_v(" "),_c('p',[_c('span',{staticClass:"badge bg-dark bigger-level0"},[_v("Step 4")]),_v(" "),_c('strong',[_v("Sync your Travis account with GitHub:")])]),_v(" "),_c('ol',[_c('li',[_v("Go to "),_c('a',{attrs:{"href":"https://travis-ci.org/account/repositories"}},[_v("your account")]),_v(".")]),_v(" "),_c('li',[_v("Click on "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Sync account")]),_v(" to fetch all your repositories into Travis-CI.")])]),_v(" "),_c('p',[_c('span',{staticClass:"badge bg-dark bigger-level0"},[_v("Step 5")]),_v(" "),_c('strong',[_v("Activate the repository:")])]),_v(" "),_c('ol',[_c('li',[_v("Go to your "),_c('a',{attrs:{"href":"https://travis-ci.org/search/publish-RepoSense/"}},[_v("publish-RepoSense fork in Travis-CI")])]),_v(" "),_c('li',[_v("Under "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Current")]),_v(" tab, click on "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Activate repository")]),_v(".")])]),_v(" "),_c('p',[_c('span',{staticClass:"badge bg-dark bigger-level0"},[_v("Step 6")]),_v(" "),_c('strong',[_v("Set the token/key:")])]),_v(" "),_c('ol',[_c('li',[_v("In the same page, click on "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("More options")]),_v(" on the right.")]),_v(" "),_c('li',[_v("Then, click on the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Settings")]),_v(" option:"),_c('br'),_v(" "),_c('a',{attrs:{"href":"/RepoSense/images/publishingguide-travissetting.jpg","target":"_self"}},[_c('img',{staticClass:"img-fluid",attrs:{"src":"/RepoSense/images/publishingguide-travissetting.jpg","alt":"Travis-CI Dashboard","title":"Travis-CI Dashboard"}})])]),_v(" "),_c('li',[_v("Under "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Environment Variables")]),_v(", name a variable as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("GITHUB_TOKEN")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("GITHUB_DEPLOY_KEY")]),_v(" depending on your earlier choice and paste the token/key into its value field; then click "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Add")]),_v(".")]),_v(" "),_c('li',[_v("Ensure that the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Display value in build log")]),_v(" is "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("switched off")]),_v(" for security reasons:"),_c('br'),_v(" "),_c('a',{attrs:{"href":"/RepoSense/images/publishingguide-githubtoken.jpg","target":"_self"}},[_c('img',{staticClass:"img-fluid",attrs:{"src":"/RepoSense/images/publishingguide-githubtoken.jpg","alt":"Travis-CI Environment Variable","title":"Travis-CI Environment Variable"}})])])]),_v(" "),_c('p',[_c('span',{staticClass:"badge bg-dark bigger-level0"},[_v("Step 7")]),_v(" "),_c('strong',[_v("Update the report configuration:")])]),_v(" "),_c('span',{attrs:{"id":"section-edit-configs"}},[_c('p',[_v("In your fork, edit "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("run.sh")]),_v(" (and if applicable, "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("group-config.csv")]),_v(") to customize the command line parameters or repositories to be analyzed.")]),_v(" "),_c('div',{staticClass:"indented-level0"},[_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('span',[_c('span',{staticClass:"glyphicon glyphicon-log-in",attrs:{"aria-hidden":"true"}})]),_v(" Appendix: "),_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("run.sh")]),_v(" format")])])]},proxy:true}])},[_v(" "),_c('div',[_c('h1',{staticClass:"display-4",attrs:{"id":"appendix-run-sh-format-2"}},[_c('span',[_v("Appendix: run.sh format")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#appendix-run-sh-format-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{staticClass:"lead"},[_c('p',[_c('a',{attrs:{"href":"https://github.com/reposense/publish-RepoSense/blob/master/run.sh"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("run.sh")])]),_v(" is a script used for automating RepoSense report generation.")])]),_v(" "),_c('h3',{attrs:{"id":"customizing-the-reposense-command-2"}},[_v("Customizing the RepoSense command"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#customizing-the-reposense-command-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("You can update the RepoSense command (i.e., the last line) in the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("run.sh")]),_v(" to match your needs.")]),_v(" "),_c('div',{staticClass:"indented-level0"},[_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('span',[_c('span',{staticClass:"glyphicon glyphicon-log-in",attrs:{"aria-hidden":"true"}})]),_v(" Appendix: "),_c('strong',[_v("CLI syntax reference")])])]},proxy:true}])},[_v(" "),_c('div',[_c('h1',{staticClass:"display-4",attrs:{"id":"appendix-cli-syntax-reference-2"}},[_c('span',[_v("Appendix: CLI syntax reference")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#appendix-cli-syntax-reference-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{staticClass:"lead"},[_c('p',[_v("The command "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar")]),_v(" takes several flags.")])]),_v(" "),_c('box',[_c('p',[_c('strong',[_v("Examples")]),_v(":")]),_v(" "),_c('p',[_v("An example of a command using most parameters:"),_c('br'),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar --repos https://github.com/reposense/RepoSense.git --output ./report_folder --since 31/1/2017 --until 31/12/2018 --formats java adoc xml --view --ignore-standalone-config --last-modified-date --timezone UTC+08 --find-previous-authors --analyze-authorship --originality-threshold 0.66")])]),_v(" "),_c('p',[_v("Same command as above but using most parameters in alias format:"),_c('br'),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar -r https://github.com/reposense/RepoSense.git -o ./report_folder -s 31/1/2017 -u 31/12/2018 -f java adoc xml -v -i -l -t UTC+08 -F -A -ot 0.66")])])]),_v(" "),_c('p',[_v("The section below provides explanations for each of the flags.")]),_v(" "),_c('h3',{attrs:{"id":"analyze-authorship-a-2"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--analyze-authorship")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-A")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#analyze-authorship-a-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--analyze-authorship")])]),_v(": Performs further analysis to distinguish between partial and full credit attribution for\nlines of code assigned to the author.")]),_v(" "),_c('ul',[_c('li',[_v("Default: this feature is turned "),_c('em',[_c('strong',[_v("off")])]),_v(" by default and the author will receive partial credits for all lines of\ncode, as the code lines are at least partial credit but may not qualify for full credit.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-A")]),_v(" (upper case)")]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--analyze-authorship")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-A")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("A darker background colour represents full credit, while a lighter background colour represents partial credit.")]),_v(" "),_c('p',[_v("If the code is attributed to a different author by the user via "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("@@author")]),_v(" tag, then the new author will be given\npartial credit.")])]),_v(" "),_c('h3',{attrs:{"id":"assets-a-2"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--assets")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-a")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#assets-a-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{attrs:{"id":"section-assets"}},[_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--assets ASSETS_DIRECTORY")])]),_v(": Specifies where to place assets for report generation.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ASSETS_DIRECTORY")]),_v(" The directory containing the assets files. A "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("favicon.ico")]),_v(" file can be placed here to customize the favicon of the dashboard, while a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("title.md")]),_v(" file can be placed to customize the "),_c('a',{attrs:{"href":"https://reposense.org/ug/customizingReports.html#add-a-title"}},[_v("title")]),_v(" of the report using "),_c('a',{attrs:{"href":"https://www.markdownguide.org/basic-syntax/"}},[_v("Markdown syntax")]),_v(".")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-a")])]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--assets ./assets")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-a ./assets")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("If "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--assets")]),_v(" is not specified, RepoSense looks for assets in the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./assets")]),_v(" directory.")])])])],1),_v(" "),_c('h3',{attrs:{"id":"config-c-2"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--config")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-c")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#config-c-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{attrs:{"id":"section-config"}},[_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--config CONFIG_DIRECTORY")])]),_v(": Specifies that config files located in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("CONFIG_DIRECTORY")]),_v(" should be used to customize the report.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("CONFIG_DIRECTORY")]),_v(" The directory containing the config files. Should contain a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(" file. Optionally, can contain an "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(" file or/and a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("group-config.csv")]),_v(" file or/and a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("report-config.json")]),_v(" file or/and a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("blurbs.md")]),_v(" file.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-c")])]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar --config ./config")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("Cannot be used with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repos")]),_v(". The "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repos")]),_v(" flag will take precedence over this flag.")]),_v(" "),_c('li',[_v("If both "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repos")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--config")]),_v(" are not specified, RepoSense looks for config files in the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./config")]),_v(" directory.")]),_v(" "),_c('li',[_v("Config files must follow "),_c('a',{attrs:{"href":"/RepoSense/ug/configFiles.html"}},[_v("this")]),_v(" format.")])])])],1),_v(" "),_c('h3',{attrs:{"id":"formats-f-2"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--formats")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-f")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#formats-f-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--formats LIST_OF_FORMATS")])]),_v(": Specifies which file extensions to be included in the analysis.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("LIST_OF_FORMATS")]),_v(" A space-separated list of file extensions that should be included in the analysis."),_c('br'),_v("\nDefault: all file formats")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-f")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--formats css fxml gradle")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-f css fxml gradle")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Binary file formats, such as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("jpg")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("png")]),_v(","),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("exe")]),_v(","),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("zip")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("rar")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("docx")]),_v(", and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("pptx")]),_v(", all will be labelled as the file type "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("binary")]),_v(" in the generated report.")])]),_v(" "),_c('h3',{attrs:{"id":"find-previous-authors-f-2"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--find-previous-authors")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-F")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#find-previous-authors-f-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--find-previous-authors")])]),_v(": Utilizes Git blame's ignore revisions functionality, RepoSense will attempt to blame the line changes caused by commits in the ignore commit list to the previous authors who altered those lines (if available).")]),_v(" "),_c('ul',[_c('li',[_v("Default: RepoSense will assume that no authors are responsible for the code changes in the lines altered by commits in the ignore commit list.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-F")]),_v(" (uppercase F)")]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--find-previous-authors")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-F")])])]),_v(" "),_c('h3',{attrs:{"id":"help-h-2"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--help")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-h")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#help-h-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--help")])]),_v(": Shows the help message.")]),_v(" "),_c('ul',[_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-h")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Cannot be used with any other flags. This flag takes precedence over all other flags.")])]),_v(" "),_c('h3',{attrs:{"id":"ignore-standalone-config-i-2"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--ignore-standalone-config")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-i")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#ignore-standalone-config-i-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--ignore-standalone-config")])]),_v(": Specifies that the standalone config file in the repo should be ignored.")]),_v(" "),_c('ul',[_c('li',[_v("Default: the standalone config file is not ignored")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-i")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--ignore-standalone-config")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-i")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("This flag overrides the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Ignore standalone config")]),_v(" field in the CSV config file.")])]),_v(" "),_c('h3',{attrs:{"id":"ignore-filesize-limit-i-2"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--ignore-filesize-limit")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-I")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#ignore-filesize-limit-i-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--ignore-filesize-limit")])]),_v(": Specifies that the file size limit (both default and user-defined) should be ignored during the analysis.")]),_v(" "),_c('ul',[_c('li',[_v("Default: the file size limit is not ignored")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-I")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--ignore-filesize-limit")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-I")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("All files are subject to a default file size limit or a custom size limit set by the user. Most files should not be\naffected by the default size limit. This flag can be useful for including files in your report that are affected by\nthe size limit. Note that this flag may result in large report sizes and/or slower report generation.")])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("This flag overrides the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Ignore file size limit")]),_v(" field in the CSV config file.")])]),_v(" "),_c('h3',{attrs:{"id":"last-modified-date-l-2"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--last-modified-date")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-l")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#last-modified-date-l-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--last-modified-date")])]),_v(": Specifies that the last modified date of each line of code should be added to "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("authorship.json")]),_v(".")]),_v(" "),_c('ul',[_c('li',[_v("Default: the last modified date of each line of code will not be added to "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("authorship.json")])]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-l")]),_v(" (lowercase L)")]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--last-modified-date")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-l")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("Cannot be used with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--shallow-cloning")]),_v(". This may result in an incorrect last modified date.")]),_v(" "),_c('li',[_v("The last modified dates will be in the same timezone specified with the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--timezone")]),_v(" flag.")])])]),_v(" "),_c('h3',{attrs:{"id":"originality-threshold-ot-2"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--originality-threshold")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-ot")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#originality-threshold-ot-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--originality-threshold [VALUE]")])]),_v(": Specifies the cut-off point for partial and full credit\nin "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--analyze-authorship")]),_v(". Author will be given full credit if their contribution exceeds this threshold, else partial\ncredit is given.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("VALUE")]),_v(" Optional. Acceptable range: [0.0, 1.0]."),_c('br'),_v("\nDefault: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("0.51")])]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-ot")])]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--originality-threshold 0.66")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-ot 0.66")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("Requires "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--analyze-authorship")]),_v(" flag.")]),_v(" "),_c('li',[_v("An author's contribution, or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("originality score")]),_v(", is calculated using Levenshtein Distance (Edit Distance) algorithm.\nWe compare the difference between current code line and its previous versions.")])])]),_v(" "),_c('h3',{attrs:{"id":"output-o-2"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--output")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-o")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#output-o-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--output OUTPUT_DIRECTORY")])]),_v(": Indicates where to save the report generated.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("OUTPUT_DIRECTORY")]),_v(" The location for the generated "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("reposense-report")]),_v(" folder."),_c('br'),_v("\nDefault: current directory")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-o")])]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--output ./foo")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-o ./foo")]),_v(" (the report will be in the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./foo/reposense-report")]),_v(" folder)")])]),_v(" "),_c('h3',{attrs:{"id":"period-p-2"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--period")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-p")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#period-p-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--period PERIOD")])]),_v(": Specifies the period of analysis window.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("PERIOD")]),_v(" The period of analysis window, in the format "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("nd")]),_v(" (for n days) or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("nw")]),_v(" (for n weeks). It is used to calculate end date if only start date is specified, or calculate end date if only start date is specified.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-p")])]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--period 30d")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--period 4w")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("If both start date and end date are not specified, the date of generating the report will be taken as the end date.")]),_v(" "),_c('li',[_v("May analyze the incorrect date range if used with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since d1")]),_v(". The program will throw a warning.")]),_v(" "),_c('li',[_v("Cannot be used with both "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--until")]),_v(". The program will throw an exception.")])])]),_v(" "),_c('h3',{attrs:{"id":"repo-repos-r-2"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repo")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repos")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-r")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#repo-repos-r-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repo REPO_LOCATION")])]),_v(": Specifies which repositories to analyze.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("REPO_LOCATION")]),_v(" A list of URLs or the disk location of the git repositories to analyze, separated by spaces.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-r")])]),_v(" "),_c('li',[_v("Examples:\n"),_c('ul',[_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repos https://github.com/reposense/RepoSense.git")])]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repo https://github.com/reposense/RepoSense.git c:/myRepose/foo/bar")]),_v(": analyzes the two specified repos (one remote, one local) and generates one report containing details of both.")])])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Cannot be used with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--config")]),_v(". This flag takes precedence over "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--config")]),_v(".")])]),_v(" "),_c('h3',{attrs:{"id":"shallow-cloning-s-2"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--shallow-cloning")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-S")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#shallow-cloning-s-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--shallow-cloning")])]),_v(": Clones repositories using Git's shallow cloning functionality, which can significantly reduce the time taken to clone large repositories. However, the flag should not be used for smaller repositories where the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(".git")]),_v(" file is smaller than 500 MB, as it would create overhead.")]),_v(" "),_c('ul',[_c('li',[_v("Default: RepoSense does not clone repositories using Git's shallow cloning functionality.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-S")]),_v(" (uppercase S)")]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--shallow-cloning")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-S")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Cannot be used with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--last-modified-date")]),_v(". This may result in an incorrect last modified date.")])]),_v(" "),_c('h3',{attrs:{"id":"since-s-2"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-s")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#since-s-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since START_DATE")])]),_v(": Specifies the start date for the period to be analyzed.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("START_DATE")]),_v(" The first day of the period to be analyzed, in the format "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("DD/MM/YYYY")]),_v("."),_c('br'),_v("\nDefault: one month before the current date")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-s")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since 21/10/2017")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-s 21/10/2017")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("If the start date is not specified, only commits made one month before the end date (if specified) or the date of generating the report, will be captured and analyzed.")]),_v(" "),_c('li',[_v("If "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("d1")]),_v(" is specified as the start date ("),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since d1")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-s d1")]),_v("), then the program will search for the earliest commit date of all repositories and use that as the start date.")]),_v(" "),_c('li',[_v("If "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("d1")]),_v(" is specified together with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--period")]),_v(", then the program will warn that the date range being analyzed may be incorrect.")])])]),_v(" "),_c('h3',{attrs:{"id":"timezone-t-2"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--timezone")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-t")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#timezone-t-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--timezone ZONE_ID")])]),_v(": Indicates the timezone to be used for the analysis.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ZONE_ID")]),_v(" The timezone in the format "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ZONE_ID[±hh[mm]]")]),_v("."),_c('br'),_v("\nDefault: system's default timezone")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-t")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--timezone UTC+08")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-t UTC-1030")])])]),_v(" "),_c('h3',{attrs:{"id":"until-u-2"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--until")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-u")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#until-u-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--until END_DATE")])]),_v(": Specifies the end date of the analysis period.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("END_DATE")]),_v(" The last date of the period to be analyzed, in the format "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("DD/MM/YYYY")]),_v("."),_c('br'),_v("\nDefault: current date")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-u")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--until 21/10/2017")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-u 21/10/2017")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Note: If the end date is not specified, the date of generating the report will be taken as the end date.")])]),_v(" "),_c('h3',{attrs:{"id":"version-v-2"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--version")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-V")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#version-v-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--version")])]),_v(": Shows the version of RepoSense.")]),_v(" "),_c('ul',[_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-V")]),_v(" (upper case)")])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Cannot be used with any other flags. This flag takes precedence over all other flags other than "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--help")]),_v(".")])]),_v(" "),_c('h3',{attrs:{"id":"view-v-2"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--view")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-v")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#view-v-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--view [REPORT_FOLDER]")])]),_v(": Specifies that the report should be opened in the default browser.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("REPORT_FOLDER")]),_v(" Optional. If specified, no analysis will be performed and the report specified by the argument will be opened."),_c('br'),_v("\nDefault: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./reposense-report")])]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-v")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--view")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-v")])])])],1)])],1),_v(" "),_c('p'),_v(" "),_c('h3',{attrs:{"id":"specifying-which-version-of-reposense-to-use-2"}},[_v("Specifying which version of RepoSense to use"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#specifying-which-version-of-reposense-to-use-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Depending on which version you wish to use for report generation, add one of the following flags to the line "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./get-reposense.py")]),_v(" in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("run.sh")]),_v(" (e.g., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./get-reposense.py --release")]),_v("):")]),_v(" "),_c('ul',[_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--release")]),_v(": Use the latest release (Stable)")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--master")]),_v(": Use the latest version of the master branch")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--tag TAG")]),_v(" (e.g. "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--tag v1.6.1")]),_v("): Use the version identified by the Git tag given")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--commit COMMIT")]),_v(" (e.g. "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--commit abc123")]),_v("): Use the version identified by the Git commit SHA given")])])])])],1),_v(" "),_c('p'),_v(" "),_c('div',{staticClass:"indented-level0"},[_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('span',[_c('span',{staticClass:"glyphicon glyphicon-log-in",attrs:{"aria-hidden":"true"}})]),_v(" Appendix: "),_c('strong',[_v("Config files format")])])]},proxy:true}])},[_v(" "),_c('div',[_c('h1',{staticClass:"display-4",attrs:{"id":"appendix-config-files-format-2"}},[_c('span',[_v("Appendix: Config files format")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#appendix-config-files-format-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{staticClass:"lead"},[_c('p',[_v("Given below are the details of the various config files used by RepoSense.")])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_c('strong',[_v("RepoSense ignores the order of column headers in the CSV config files. However, the spelling of the column headers must match the specified headers exactly, or the column would be ignored by RepoSense.")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_c('strong',[_v("A value in a config file is optional to provide unless it is specified as "),_c('span',{staticClass:"badge bg-danger"},[_v("mandatory")])]),_v(".")])]),_v(" "),_c('h2',{attrs:{"id":"repo-config-csv-2"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#repo-config-csv-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(" file contains repo-level config data.")]),_v(" Each row represents a repository's configuration ("),_c('a',{attrs:{"href":"/RepoSense/ug/repo-config.csv"}},[_v("example")]),_v(").")]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Column Name")]),_v(" "),_c('th',[_v("Explanation")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_v("Repository's Location "),_c('span',{staticClass:"badge bg-danger"},[_v("mandatory")])]),_v(" "),_c('td',[_v("The "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Remote Repo URL")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Disk Path")]),_v(" to the git repository e.g., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://github.com/foo/bar.git")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("C:\\Users\\user\\Desktop\\GitHub\\foo\\bar")])])]),_v(" "),_c('tr',[_c('td',[_v("Branch")]),_v(" "),_c('td',[_v("The branch to analyze in the target repository e.g., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("master")]),_v(". Default: the default branch of the repo")])]),_v(" "),_c('tr',[_c('td',[_v("File formats"),_c('sup',[_v("*+")])]),_v(" "),_c('td',[_v("The file extensions to analyze. Binary file formats, such as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("png")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("jpg")]),_v(", will be automatically labelled as the file type "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("binary")]),_v(" in the generated report. Default: all file formats")])]),_v(" "),_c('tr',[_c('td',[_v("Find Previous Authors")]),_v(" "),_c('td',[_v("Enter "),_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("yes")])]),_v(" to utilize Git blame's ignore revisions functionality, RepoSense will attempt to blame the line changes caused by commits in the ignore commit list to the previous authors who altered those lines (if available).")])]),_v(" "),_c('tr',[_c('td',[_v("Ignore Glob List"),_c('sup',[_v("*+")])]),_v(" "),_c('td',[_v("The list of file path globs to ignore during analysis for each author e.g., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("test/**;temp/**")]),_v(". Refer to the "),_c('a',{attrs:{"href":"https://docs.oracle.com/javase/tutorial/essential/io/fileOps.html#glob"}},[_c('em',[_v("glob format")])]),_v(" for the path glob syntax.")])]),_v(" "),_c('tr',[_c('td',[_v("Ignore standalone config")]),_v(" "),_c('td',[_v("To ignore the standalone config file (if any) in target repository, enter "),_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("yes")])]),_v(". If the cell is empty, the standalone config file in the repo (if any) will take precedence over configurations provided in the csv files.")])]),_v(" "),_c('tr',[_c('td',[_v("Ignore Commits List"),_c('sup',[_v("*+")])]),_v(" "),_c('td',[_v("The list of commits to ignore during analysis. For accurate results, the commits should be provided with their full hash. Additionally, a range of commits can be specified using the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("..")]),_v(" notation e.g. "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("abc123..def456")]),_v(" (both inclusive).")])]),_v(" "),_c('tr',[_c('td',[_v("Ignore Authors List"),_c('sup',[_v("*+")])]),_v(" "),_c('td',[_v("The list of authors to ignore during analysis. Authors should be specified by their "),_c('a',{attrs:{"href":"#a-note-about-git-author-name"}},[_v("Git Author Name")]),_v(".")])]),_v(" "),_c('tr',[_c('td',[_v("Shallow Cloning")]),_v(" "),_c('td',[_v("Enter "),_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("yes")])]),_v(" to clone the repository using Git's shallow cloning functionality. This option can significantly reduce the time taken to clone large repositories. However, the option should ideally be disabled for smaller repositories where the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(".git")]),_v(" file is smaller than 500 MB, as it would create overhead.")])]),_v(" "),_c('tr',[_c('td',[_v("File Size Limit"),_c('sup',[_v("+")])]),_v(" "),_c('td',[_v("Enter a file size limit for the repository in bytes as a single number without units (for a size limit of 1MB for example, enter 1000000). This file size limit will override the default file size limit (500KB). Files exceeding the file size limit will be marked as ignored and only the file name and line count will be reflected in the report.")])]),_v(" "),_c('tr',[_c('td',[_v("Ignore File Size Limit")]),_v(" "),_c('td',[_v("Enter "),_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("yes")])]),_v(" to ignore both the default file size limit and the file size limit possibly set by the user in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(".")])]),_v(" "),_c('tr',[_c('td',[_v("Skip Ignored File Analysis")]),_v(" "),_c('td',[_v("Enter "),_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("yes")])]),_v(" to ignore analysis of files exceeding the file size limit entirely. If file analysis is skipped, all information about the file will be omitted from the generated report. This option can significantly improve report generation time.")])])])])]),_c('box',{attrs:{"type":"info","seamless":""}},[_v("\nThe Shallow Cloning option is incompatible with the \"--last-modified-date\" CLI flag.\n")]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_v("\nIf Ignore File Size Limit is yes, the File Size Limit and Skip Ignored File Analysis columns are ignored.\n")]),_v(" "),_c('p',[_c('sup',[_v("* "),_c('strong',[_v("Multi-value column")]),_v(": multiple values can be entered in this column using a semicolon "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(";")]),_v(" as the separator.")]),_c('br'),_v(" "),_c('sup',[_v("+ "),_c('strong',[_v("Overrideable column")]),_v(": prepend with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("override:")]),_v(" to use entered value(s) instead of value(s) from standalone config.")])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("When using "),_c('a',{attrs:{"href":"#config-json-standalone-config-file"}},[_v("standalone config")]),_v(" (if it is not ignored), it is possible to override specific values from the standalone config by prepending the entered value with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("override:")]),_v(".")])]),_v(" "),_c('h2',{attrs:{"id":"author-config-csv-2"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#author-config-csv-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Optionally, you can use an "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(" (which should be in the same directory as the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(" file) to provide more details about the authors to analyze ("),_c('a',{attrs:{"href":"/RepoSense/ug/author-config.csv"}},[_v("example")]),_v("). It should contain the following columns:")]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Column Name")]),_v(" "),_c('th',[_v("Explanation")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_v("Repository's Location"),_c('sup',[_v("*")])]),_v(" "),_c('td',[_v("Same as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(". Default: all the repos in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(".")])]),_v(" "),_c('tr',[_c('td',[_v("Branch")]),_v(" "),_c('td',[_v("The branch to analyze for this author, e.g., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("master")]),_v(". Default: the author will be bound to all the repos in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(" that has the same repo's location, regardless of branch.")])]),_v(" "),_c('tr',[_c('td',[_v("Author's Git Host ID"),_c('sup',[_v("#")]),_v(" "),_c('span',{staticClass:"badge bg-danger"},[_v("mandatory")])]),_v(" "),_c('td',[_v("Username of the target author's profile on GitHub, GitLab or Bitbucket, e.g."),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("JohnDoe")]),_v(".")])]),_v(" "),_c('tr',[_c('td',[_v("Author's Emails"),_c('sup',[_v("*")])]),_v(" "),_c('td',[_v("Associated emails of the author. For GitHub users, this can be found in your "),_c('a',{attrs:{"href":"https://github.com/settings/emails"}},[_v("GitHub settings")]),_v(".")])]),_v(" "),_c('tr',[_c('td',[_v("Author's Display Name")]),_v(" "),_c('td',[_v("The name to display for the author. Default: author's username.")])]),_v(" "),_c('tr',[_c('td',[_v("Author's Git Author Name"),_c('sup',[_v("*")])]),_v(" "),_c('td',[_v("The meaning of "),_c('em',[_v("Git Author Name")]),_v(" is explained in "),_c('a',{attrs:{"href":"#a-note-about-git-author-name"}},[_c('em',[_v("A note about git author name")])]),_v(".")])]),_v(" "),_c('tr',[_c('td',[_v("Ignore Glob List"),_c('sup',[_v("*")])]),_v(" "),_c('td',[_v("Files to ignore for this author, in addition to files ignored by the patterns specified in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(". The path glob syntax is the same as that of Ignore Glob List in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(".")])])])])]),_c('p',[_c('sup',[_v("* "),_c('strong',[_v("Multi-value column")]),_v(": multiple values can be entered in this column using a semicolon "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(";")]),_v(" as the separator.")]),_v(" "),_c('br'),_v(" "),_c('sup',[_v("# For backward compatibility, "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Author's GitHub ID")]),_v(" is still accepted as the header in place of "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Author's Git Host ID")]),_v(".")])]),_v(" "),_c('p',[_v("If "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(" is not given and the repo has not provided author details in a standalone config file, all the authors of the repositories within the date range specified (if any) will be analyzed.")]),_v(" "),_c('p',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(" has some advanced syntax that can help to reduce duplication of the author's information. The syntax guide is given below:")]),_v(" "),_c('div',{staticClass:"indented-level0"},[_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('span',[_c('span',{staticClass:"glyphicon glyphicon-log-in",attrs:{"aria-hidden":"true"}})]),_v(" Appendix: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(" advanced syntax")])]},proxy:true}])},[_v(" "),_c('div',[_c('h1',{staticClass:"display-4",attrs:{"id":"appendix-author-config-csv-advanced-syntax-2"}},[_c('span',[_v("Appendix: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(" advanced syntax")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#appendix-author-config-csv-advanced-syntax-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{staticClass:"lead"},[_c('p',[_v("Given below are the advanced syntax available for "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(".")])]),_v(" "),_c('h2',{attrs:{"id":"multiple-repository-s-location-per-author-2"}},[_v("Multiple "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repository's Location")]),_v(" per author"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#multiple-repository-s-location-per-author-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('h4',{attrs:{"id":"specifying-multiple-repository-s-location-2"}},[_v("Specifying multiple "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repository's Location")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#specifying-multiple-repository-s-location-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("To specify multiple "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repository's Location")]),_v(" in a single row, we can use a semicolon "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(";")]),_v(" as a separator.")]),_v(" "),_c('p',[_v("Below is an example:")]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Repository's Location")]),_v(" "),_c('th',[_v("Branch")]),_v(" "),_c('th',[_v("Author's Git Host ID")]),_v(" "),_c('th',[_v("... Hidden columns")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://github.com/reposense/RepoSense.git;https://github.com/MarkBind/markbind.git")])]),_v(" "),_c('td',[_v("master")]),_v(" "),_c('td',[_v("sikai00")]),_v(" "),_c('td',[_v("--")])])])])]),_c('p',[_v("We have now furnished author details for both repositories in a single row, instead of having two individual rows per "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repository's Location")]),_v(".")]),_v(" "),_c('br'),_v(" "),_c('h4',{attrs:{"id":"specifying-repository-s-location-with-one-or-more-specific-branches-2"}},[_v("Specifying "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repository's Location")]),_v(" with one or more specific branches"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#specifying-repository-s-location-with-one-or-more-specific-branches-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("To list out one or more branches for a particular "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repository's Location")]),_v(", we can use a pipe "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("|")]),_v(" separator to demarcate the different branches.")]),_v(" "),_c('p',[_v("Below is an example:")]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Repository's Location")]),_v(" "),_c('th',[_v("Branch")]),_v(" "),_c('th',[_v("Author's Git Host ID")]),_v(" "),_c('th',[_v("... Hidden columns")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://github.com/reposense/RepoSense.git~master|release|cypress")])]),_v(" "),_c('td',[_v("master")]),_v(" "),_c('td',[_v("sikai00")]),_v(" "),_c('td',[_v("--")])])])])]),_c('p',[_v("We have now provided author details for three different branches in a single repo, using a single row.")]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("The branch specified through the delimiter syntax will take precedence over the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Branch")]),_v(" column.")])]),_v(" "),_c('h2',{attrs:{"id":"using-github-branch-url-as-repository-s-location-2"}},[_v("Using GitHub branch URL as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repository's Location")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#using-github-branch-url-as-repository-s-location-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("We can also use GitHub branch URL as copied from the address bar directly, to be able to quickly use the URL to specify the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repository's Location")]),_v(" and a specific "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Branch")]),_v(" at the same time.")]),_v(" "),_c('p',[_v("Below is an example:")]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Repository's Location")]),_v(" "),_c('th',[_v("Branch")]),_v(" "),_c('th',[_v("Author's Git Host ID")]),_v(" "),_c('th',[_v("... Hidden columns")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://github.com/reposense/RepoSense/tree/release")])]),_v(" "),_c('td'),_v(" "),_c('td',[_v("sikai00")]),_v(" "),_c('td',[_v("--")])])])])]),_c('p',[_v("There is no need to specify the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Branch")]),_v(" column now, as we have specified it through the GitHub branch URL.")]),_v(" "),_c('box',{attrs:{"type":"warning","seamless":""}},[_c('p',[_v("GitLab and BitBucket branch URL are not supported at the moment.")])]),_v(" "),_c('h2',{attrs:{"id":"combining-the-advanced-syntax-2"}},[_v("Combining the advanced syntax"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#combining-the-advanced-syntax-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("It is possible to combine the above-mentioned advanced syntax. By doing so, we can go from:")]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Repository's Location")]),_v(" "),_c('th',[_v("Branch")]),_v(" "),_c('th',[_v("Author's Git Host ID")]),_v(" "),_c('th',[_v("... Hidden columns")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://github.com/MarkBind/markbind/tree/vue3-migration")])]),_v(" "),_c('td'),_v(" "),_c('td',[_v("sikai00")]),_v(" "),_c('td',[_v("--")])]),_v(" "),_c('tr',[_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://github.com/reposense/RepoSense.git")])]),_v(" "),_c('td',[_v("master")]),_v(" "),_c('td',[_v("sikai00")]),_v(" "),_c('td',[_v("--")])]),_v(" "),_c('tr',[_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://github.com/reposense/RepoSense.git")])]),_v(" "),_c('td',[_v("cypress")]),_v(" "),_c('td',[_v("sikai00")]),_v(" "),_c('td',[_v("--")])])])])]),_c('p',[_v("to:")]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Repository's Location")]),_v(" "),_c('th',[_v("Branch")]),_v(" "),_c('th',[_v("Author's Git Host ID")]),_v(" "),_c('th',[_v("... Hidden columns")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://github.com/MarkBind/markbind/tree/vue3-migration;https://github.com/reposense/RepoSense.git~master|cypress")])]),_v(" "),_c('td'),_v(" "),_c('td',[_v("sikai00")]),_v(" "),_c('td',[_v("--")])])])])]),_c('br')],1)])],1),_v(" "),_c('p'),_v(" "),_c('h2',{attrs:{"id":"group-config-csv-2"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("group-config.csv")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#group-config-csv-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Optionally, you can provide a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("group-config.csv")]),_v("(which should be in the same directory as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(" file) to provide details on any custom groupings for files in specified repositories ("),_c('a',{attrs:{"href":"/RepoSense/ug/group-config.csv"}},[_v("example")]),_v("). It should contain the following columns:")]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Column Name")]),_v(" "),_c('th',[_v("Explanation")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_v("Repository's Location")]),_v(" "),_c('td',[_v("Same as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(". Default: all the repos in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")])])]),_v(" "),_c('tr',[_c('td',[_v("Group Name "),_c('span',{staticClass:"badge bg-danger"},[_v("mandatory")])]),_v(" "),_c('td',[_v("Name of the group, e.g.,"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("test")]),_v(".")])]),_v(" "),_c('tr',[_c('td',[_v("Globs * "),_c('span',{staticClass:"badge bg-danger"},[_v("mandatory")])]),_v(" "),_c('td',[_v("The list of file path globs to include for specified group, e.g.,"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("**/test/*;**.java")]),_v(".")])])])])]),_c('p',[_c('sup',[_v("* "),_c('strong',[_v("Multi-value column")]),_v(": multiple values can be entered in this column using a semicolon "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(";")]),_v(" as the separator.")])]),_v(" "),_c('p',[_v("Note that a file in a given repository should only be tagged to one group. "),_c('br'),_v("\ne.g.: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("example.java")]),_v(" in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("example-repo")]),_v(" can either be in the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("test")]),_v(" group or the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("code")]),_v(" group, but not in both "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("test")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("code")]),_v(" group. If multiple groups are specified for a given file, the latter group (i.e., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("code")]),_v(" group) is set for the file.")]),_v(" "),_c('h2',{attrs:{"id":"report-config-json-2"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("report-config.json")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#report-config-json-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("You can optionally use "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("report-config.json")]),_v(" to customize report generation by providing the following information. ("),_c('a',{attrs:{"href":"/RepoSense/ug/report-config.json"}},[_v("example")]),_v(")")]),_v(" "),_c('p',[_c('strong',[_v("Fields to provide")]),_v(":")]),_v(" "),_c('ul',[_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("title")]),_v(": Title of the generated report, which is also the title of the deployed dashboard. Default: \"RepoSense Report\"")])]),_v(" "),_c('div',{attrs:{"id":"section-standalone"}},[_c('h2',{attrs:{"id":"config-json-standalone-config-file-2"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("config.json")]),_v(" (standalone config file)"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#config-json-standalone-config-file-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Repo owners can provide the following additional information to RepoSense using a config file that we call the "),_c('strong',[_c('em',[_v("standalone config file")])]),_v(":")]),_v(" "),_c('ul',[_c('li',[_v("which files/authors/commits to analyze/omit")]),_v(" "),_c('li',[_v("which git and git host usernames belong to which authors")]),_v(" "),_c('li',[_v("the display of an author")])]),_v(" "),_c('p',[_v("To use this feature, add a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("_reposense/config.json")]),_v(" to the root of your repo using the format in the example below ("),_c('a',{attrs:{"href":"https://github.com/reposense/RepoSense/blob/master/_reposense/config.json"}},[_v("another example")]),_v(") and "),_c('strong',[_v("commit it")]),_v(" (reason: RepoSense can see committed code only):")]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"no-line-numbers hljs json"}},[_c('span',[_v("{\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"ignoreGlobList\"")]),_v(": ["),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"about-us/**\"")]),_v(", "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"**index.html\"")]),_v("],\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"formats\"")]),_v(": ["),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"html\"")]),_v(", "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"css\"")]),_v("],\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"ignoreCommitList\"")]),_v(": ["),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"90018e49f129ce7e0abdc8b18e91c9813588c601\"")]),_v(", "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"67890def\"")]),_v(", "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"abc123..def456\"")]),_v("],\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"ignoreAuthorList\"")]),_v(": ["),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"charlie\"")]),_v("],\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"authors\"")]),_v(":\n")]),_c('span',[_v(" [\n")]),_c('span',[_v(" {\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"gitId\"")]),_v(": "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"alice\"")]),_v(",\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"emails\"")]),_v(": ["),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"alice@example.com\"")]),_v(", "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"alicet@example.com\"")]),_v("],\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"displayName\"")]),_v(": "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"Alice T.\"")]),_v(",\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"authorNames\"")]),_v(": ["),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"AT\"")]),_v(", "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"A\"")]),_v("],\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"ignoreGlobList\"")]),_v(": ["),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"**.css\"")]),_v("]\n")]),_c('span',[_v(" },\n")]),_c('span',[_v(" {\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"gitId\"")]),_v(": "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"bob\"")]),_v("\n")]),_c('span',[_v(" }\n")]),_c('span',[_v(" ]\n")]),_c('span',[_v("}\n")])])]),_c('p',[_v("Note: all fields are optional unless specified otherwise.")]),_v(" "),_c('p',[_c('strong',[_v("Fields to provide "),_c('em',[_v("repository-level")]),_v(" info")]),_v(":")]),_v(" "),_c('ul',[_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ignoreGlobList")]),_v(": Folders/files to ignore, specified using the "),_c('a',{attrs:{"href":"https://docs.oracle.com/javase/tutorial/essential/io/fileOps.html#glob"}},[_c('em',[_v("glob format")])]),_v(".")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("formats")]),_v(": File formats to analyze. Binary file formats, such as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("png")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("jpg")]),_v(", will be automatically labelled as the file type "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("binary")]),_v(" in the generated report. Default: all file formats")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ignoreCommitList")]),_v(": The list of commits to ignore during analysis. For accurate results, the commits should be provided with their full hash. Additionally, a range of commits can be specified using the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("..")]),_v(" notation e.g. "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("abc123..def456")]),_v(" (both inclusive).")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ignoreAuthorList")]),_v(": The list of authors to ignore during analysis. Authors specified in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("authors")]),_v(" field or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(" will be also be omitted if they are in this list. Authors should be specified by their "),_c('a',{attrs:{"href":"#a-note-about-git-author-name"}},[_v("Git Author Name")]),_v(".")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("fileSizeLimit")]),_v(": A file size limit for the repository in bytes as a single number without units, that will override the default file size limit. If not specified, the default file size limit will continue to be used.")])]),_v(" "),_c('p',[_c('strong',[_v("Fields to provide "),_c('em',[_v("author-level")]),_v(" info")]),_v(":"),_c('br'),_v("\nNote: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("authors")]),_v(" field should contain "),_c('em',[_v("all")]),_v(" authors that should be captured in the analysis.")]),_v(" "),_c('ul',[_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("gitId")]),_v(": Username of the author. "),_c('span',{staticClass:"badge bg-danger"},[_v("mandatory")]),_v(" field.")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("emails")]),_v(": Associated git emails of the author. For GitHub, this can be found in your "),_c('a',{attrs:{"href":"https://github.com/settings/emails"}},[_v("GitHub settings")]),_v(".")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("displayName")]),_v(": Name to display on the report for this author.")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("authorNames")]),_v(": Git Author Name(s) used in the author's commits. By default, RepoSense assumes an author would use their remote Git Host username as the Git username too. The meaning of "),_c('em',[_v("Git Author Name")]),_v(" is explained in "),_c('a',{attrs:{"href":"#a-note-about-git-author-name"}},[_c('em',[_v("A note about git author name")])]),_v(".")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ignoreGlobList")]),_v(": "),_c('em',[_v("Additional")]),_v(" (i.e. on top of the repo-level "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ignoreGlobList")]),_v(") folders/files to ignore for a specific author. The path glob syntax is specified by the "),_c('a',{attrs:{"href":"https://docs.oracle.com/javase/tutorial/essential/io/fileOps.html#glob"}},[_c('em',[_v("glob format")])]),_v(". In the example above, the actual "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ignoreGlobList")]),_v(" for "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("alice")]),_v(" would be "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("[\"about-us/**\", \"**index.html\", \"**.css\"]")]),_v(".")])]),_v(" "),_c('p',[_v("To verify your standalone configuration is as intended, add the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("_reposense/config.json")]),_v(" to your local copy of repo and run RepoSense against it as follows:"),_c('br')]),_v(" "),_c('ul',[_c('li',[_v("Format: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar --repo LOCAL_REPO_LOCATION")]),_v(" "),_c('br')]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar --repo c:/myRepose/foo/bar")]),_c('br'),_v("\nAfter that, view the report to see if the configuration you specified in the config file is being reflected correctly in the report.")])]),_v(" "),_c('h2',{attrs:{"id":"a-note-about-git-author-name-2"}},[_v("A note about git author name"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#a-note-about-git-author-name-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Git Author Name")]),_v(" refers to the customizable author's display name set in the local "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(".gitconfig")]),_v(" file. For example, in the Git Log's display:")]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"no-line-numbers hljs"}},[_c('span',[_v("...\n")]),_c('span',[_v("commit cd7f610e0becbdf331d5231887d8010a689f87c7\n")]),_c('span',[_v("Author: ConfiguredAuthorName \n")]),_c('span',[_v("Date: Fri Feb 9 19:14:41 2018 +0800\n")]),_c('span',[_v("\n")]),_c('span',[_v(" Make some changes to show my new author's name\n")]),_c('span',[_v("\n")]),_c('span',[_v("commit e3f699fd4ef128eebce98d5b4e5b3bb06a512f49\n")]),_c('span',[_v("Author: ActualGitHostId \n")]),_c('span',[_v("Date: Fri Feb 9 19:13:13 2018 +0800\n")]),_c('span',[_v("\n")]),_c('span',[_v(" Initial commit\n")]),_c('span',[_v(" ...\n")])])]),_c('p',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ActualGitHostId")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ConfiguredAuthorName")]),_v(" are both "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Git Author Name")]),_v(" of the same author."),_c('br'),_v("\nTo find the author name that you are currently using for your current git repository, run the following command within your git repository:")]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"no-line-numbers hljs"}},[_c('span',[_v("git config user.name\n")])])]),_c('p',[_v("To set the author name to the value you want (e.g., to set it to your GitHub username) for your current git repository, you can use the following command ("),_c('a',{attrs:{"href":"https://www.git-tower.com/learn/git/faq/change-author-name-email"}},[_v("more info")]),_v("):")]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"no-line-numbers hljs"}},[_c('span',[_v("git config user.name \"YOUR_AUTHOR_NAME”\n")])])]),_c('p',[_v("To set the author name to use a default value you want for future git repositories, you can use the following command:")]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"no-line-numbers hljs"}},[_c('span',[_v("git config --global user.name \"YOUR_AUTHOR_NAME”\n")])])]),_c('p',[_v("RepoSense expects the Git Author Name to be the same as author's username on the Git hosting platform (GitHub, GitLab, BitBucket). If an author's "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Git Author Name")]),_v(" is different from their username on the Git hosting platform, the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Git Author Name")]),_v(" needs to be specified in the standalone config file. If the author has more than one "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Git Author Name")]),_v(", multiple values can be entered too.")]),_v(" "),_c('box',{attrs:{"type":"warning","seamless":""}},[_c('p',[_v("Note: Symbols such as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("\"")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("!")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("/")]),_v(" etc. in your author name will be omitted, which may reduce the accuracy of the analysis if 2 names in the repository are approximately similar.")])])],1),_v(" "),_c('div',{attrs:{"id":"section-blurbs"}},[_c('h2',{attrs:{"id":"blurbs-md-2"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("blurbs.md")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#blurbs-md-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("You can optionally use "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("blurbs.md")]),_v(" to add blurbs in Markdown syntax for repository branches. These blurbs will be seen when grouping by "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repo/Branch")]),_v(". ("),_c('a',{attrs:{"href":"https://github.com/reposense/RepoSense/blob/master/docs/ug/blurbs.md"}},[_v("example")]),_v(")")]),_v(" "),_c('p',[_c('strong',[_v("Format")]),_v(":")]),_v(" "),_c('ul',[_c('li',[_v("First line in section: Link to the repository branch.")]),_v(" "),_c('li',[_v("Second line onwards: Blurb content.")]),_v(" "),_c('li',[_v("Delimiter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("")]),_v(". Everything on the line after the delimiter will be ignored.")])])])],1)])],1),_v(" "),_c('p')]),_v(" "),_c('p',[_c('span',{staticClass:"badge bg-dark bigger-level0"},[_v("Step 8")]),_v(" "),_c('strong',[_v("View the generated report:")])]),_v(" "),_c('ol',[_c('li',[_v("Go to the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Settings")]),_v(" page of your fork in GitHub.")]),_v(" "),_c('li',[_v("Under the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("GitHub Pages")]),_v(" section, look for "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Your site is published at [LINK]")]),_v(". It should look something like "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://[YOUR_GITHUB_ID].github.io/publish-RepoSense")]),_v(".\n"),_c('a',{attrs:{"href":"/RepoSense/images/publishingguide-githubsetting.jpg","target":"_self"}},[_c('img',{staticClass:"img-fluid",attrs:{"src":"/RepoSense/images/publishingguide-githubsetting.jpg","alt":"GitHub Setting","title":"GitHub Setting"}})])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("It takes a few minutes for report generation. Meanwhile, you can monitor the progress live at "),_c('a',{attrs:{"href":"https://travis-ci.org/dashboard/builds"}},[_v("Travis-CI's Builds")]),_v(".")])])],1)])],1),_v(" "),_c('p')],1)])],1),_v(" "),_c('p'),_v(" "),_c('p',[_v("As you generate reports, you may need to learn how to customize those reports further.")]),_v(" "),_c('div',{staticClass:"indented-level0"},[_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('span',[_c('span',{staticClass:"glyphicon glyphicon-log-in",attrs:{"aria-hidden":"true"}})]),_v(" "),_c('strong',[_v("Customizing reports")])])]},proxy:true}])},[_v(" "),_c('div',[_c('h1',{staticClass:"display-4",attrs:{"id":"customizing-reports"}},[_c('span',[_v("Customizing reports")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#customizing-reports","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{staticClass:"lead"},[_c('p',[_v("The report can be customized using several ways, as explained below.")])]),_v(" "),_c('h3',{attrs:{"id":"customize-using-cli-flags"}},[_v("Customize using CLI flags"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#customize-using-cli-flags","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_v("The simplest approach is to provide additional flags when running RepoSense.")]),_v(" The various flags are given in the panel below.")]),_v(" "),_c('div',{staticClass:"indented-level0"},[_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('span',[_c('span',{staticClass:"glyphicon glyphicon-log-in",attrs:{"aria-hidden":"true"}})]),_v(" Appendix: "),_c('strong',[_v("CLI syntax reference")])])]},proxy:true}])},[_v(" "),_c('div',[_c('h1',{staticClass:"display-4",attrs:{"id":"appendix-cli-syntax-reference-3"}},[_c('span',[_v("Appendix: CLI syntax reference")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#appendix-cli-syntax-reference-3","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{staticClass:"lead"},[_c('p',[_v("The command "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar")]),_v(" takes several flags.")])]),_v(" "),_c('box',[_c('p',[_c('strong',[_v("Examples")]),_v(":")]),_v(" "),_c('p',[_v("An example of a command using most parameters:"),_c('br'),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar --repos https://github.com/reposense/RepoSense.git --output ./report_folder --since 31/1/2017 --until 31/12/2018 --formats java adoc xml --view --ignore-standalone-config --last-modified-date --timezone UTC+08 --find-previous-authors --analyze-authorship --originality-threshold 0.66")])]),_v(" "),_c('p',[_v("Same command as above but using most parameters in alias format:"),_c('br'),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar -r https://github.com/reposense/RepoSense.git -o ./report_folder -s 31/1/2017 -u 31/12/2018 -f java adoc xml -v -i -l -t UTC+08 -F -A -ot 0.66")])])]),_v(" "),_c('p',[_v("The section below provides explanations for each of the flags.")]),_v(" "),_c('h3',{attrs:{"id":"analyze-authorship-a-3"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--analyze-authorship")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-A")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#analyze-authorship-a-3","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--analyze-authorship")])]),_v(": Performs further analysis to distinguish between partial and full credit attribution for\nlines of code assigned to the author.")]),_v(" "),_c('ul',[_c('li',[_v("Default: this feature is turned "),_c('em',[_c('strong',[_v("off")])]),_v(" by default and the author will receive partial credits for all lines of\ncode, as the code lines are at least partial credit but may not qualify for full credit.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-A")]),_v(" (upper case)")]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--analyze-authorship")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-A")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("A darker background colour represents full credit, while a lighter background colour represents partial credit.")]),_v(" "),_c('p',[_v("If the code is attributed to a different author by the user via "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("@@author")]),_v(" tag, then the new author will be given\npartial credit.")])]),_v(" "),_c('h3',{attrs:{"id":"assets-a-3"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--assets")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-a")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#assets-a-3","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{attrs:{"id":"section-assets"}},[_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--assets ASSETS_DIRECTORY")])]),_v(": Specifies where to place assets for report generation.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ASSETS_DIRECTORY")]),_v(" The directory containing the assets files. A "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("favicon.ico")]),_v(" file can be placed here to customize the favicon of the dashboard, while a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("title.md")]),_v(" file can be placed to customize the "),_c('a',{attrs:{"href":"https://reposense.org/ug/customizingReports.html#add-a-title"}},[_v("title")]),_v(" of the report using "),_c('a',{attrs:{"href":"https://www.markdownguide.org/basic-syntax/"}},[_v("Markdown syntax")]),_v(".")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-a")])]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--assets ./assets")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-a ./assets")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("If "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--assets")]),_v(" is not specified, RepoSense looks for assets in the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./assets")]),_v(" directory.")])])])],1),_v(" "),_c('h3',{attrs:{"id":"config-c-3"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--config")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-c")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#config-c-3","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{attrs:{"id":"section-config"}},[_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--config CONFIG_DIRECTORY")])]),_v(": Specifies that config files located in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("CONFIG_DIRECTORY")]),_v(" should be used to customize the report.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("CONFIG_DIRECTORY")]),_v(" The directory containing the config files. Should contain a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(" file. Optionally, can contain an "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(" file or/and a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("group-config.csv")]),_v(" file or/and a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("report-config.json")]),_v(" file or/and a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("blurbs.md")]),_v(" file.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-c")])]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar --config ./config")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("Cannot be used with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repos")]),_v(". The "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repos")]),_v(" flag will take precedence over this flag.")]),_v(" "),_c('li',[_v("If both "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repos")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--config")]),_v(" are not specified, RepoSense looks for config files in the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./config")]),_v(" directory.")]),_v(" "),_c('li',[_v("Config files must follow "),_c('a',{attrs:{"href":"/RepoSense/ug/configFiles.html"}},[_v("this")]),_v(" format.")])])])],1),_v(" "),_c('h3',{attrs:{"id":"formats-f-3"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--formats")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-f")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#formats-f-3","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--formats LIST_OF_FORMATS")])]),_v(": Specifies which file extensions to be included in the analysis.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("LIST_OF_FORMATS")]),_v(" A space-separated list of file extensions that should be included in the analysis."),_c('br'),_v("\nDefault: all file formats")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-f")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--formats css fxml gradle")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-f css fxml gradle")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Binary file formats, such as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("jpg")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("png")]),_v(","),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("exe")]),_v(","),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("zip")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("rar")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("docx")]),_v(", and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("pptx")]),_v(", all will be labelled as the file type "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("binary")]),_v(" in the generated report.")])]),_v(" "),_c('h3',{attrs:{"id":"find-previous-authors-f-3"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--find-previous-authors")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-F")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#find-previous-authors-f-3","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--find-previous-authors")])]),_v(": Utilizes Git blame's ignore revisions functionality, RepoSense will attempt to blame the line changes caused by commits in the ignore commit list to the previous authors who altered those lines (if available).")]),_v(" "),_c('ul',[_c('li',[_v("Default: RepoSense will assume that no authors are responsible for the code changes in the lines altered by commits in the ignore commit list.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-F")]),_v(" (uppercase F)")]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--find-previous-authors")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-F")])])]),_v(" "),_c('h3',{attrs:{"id":"help-h-3"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--help")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-h")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#help-h-3","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--help")])]),_v(": Shows the help message.")]),_v(" "),_c('ul',[_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-h")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Cannot be used with any other flags. This flag takes precedence over all other flags.")])]),_v(" "),_c('h3',{attrs:{"id":"ignore-standalone-config-i-3"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--ignore-standalone-config")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-i")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#ignore-standalone-config-i-3","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--ignore-standalone-config")])]),_v(": Specifies that the standalone config file in the repo should be ignored.")]),_v(" "),_c('ul',[_c('li',[_v("Default: the standalone config file is not ignored")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-i")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--ignore-standalone-config")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-i")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("This flag overrides the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Ignore standalone config")]),_v(" field in the CSV config file.")])]),_v(" "),_c('h3',{attrs:{"id":"ignore-filesize-limit-i-3"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--ignore-filesize-limit")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-I")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#ignore-filesize-limit-i-3","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--ignore-filesize-limit")])]),_v(": Specifies that the file size limit (both default and user-defined) should be ignored during the analysis.")]),_v(" "),_c('ul',[_c('li',[_v("Default: the file size limit is not ignored")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-I")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--ignore-filesize-limit")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-I")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("All files are subject to a default file size limit or a custom size limit set by the user. Most files should not be\naffected by the default size limit. This flag can be useful for including files in your report that are affected by\nthe size limit. Note that this flag may result in large report sizes and/or slower report generation.")])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("This flag overrides the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Ignore file size limit")]),_v(" field in the CSV config file.")])]),_v(" "),_c('h3',{attrs:{"id":"last-modified-date-l-3"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--last-modified-date")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-l")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#last-modified-date-l-3","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--last-modified-date")])]),_v(": Specifies that the last modified date of each line of code should be added to "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("authorship.json")]),_v(".")]),_v(" "),_c('ul',[_c('li',[_v("Default: the last modified date of each line of code will not be added to "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("authorship.json")])]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-l")]),_v(" (lowercase L)")]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--last-modified-date")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-l")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("Cannot be used with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--shallow-cloning")]),_v(". This may result in an incorrect last modified date.")]),_v(" "),_c('li',[_v("The last modified dates will be in the same timezone specified with the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--timezone")]),_v(" flag.")])])]),_v(" "),_c('h3',{attrs:{"id":"originality-threshold-ot-3"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--originality-threshold")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-ot")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#originality-threshold-ot-3","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--originality-threshold [VALUE]")])]),_v(": Specifies the cut-off point for partial and full credit\nin "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--analyze-authorship")]),_v(". Author will be given full credit if their contribution exceeds this threshold, else partial\ncredit is given.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("VALUE")]),_v(" Optional. Acceptable range: [0.0, 1.0]."),_c('br'),_v("\nDefault: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("0.51")])]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-ot")])]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--originality-threshold 0.66")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-ot 0.66")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("Requires "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--analyze-authorship")]),_v(" flag.")]),_v(" "),_c('li',[_v("An author's contribution, or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("originality score")]),_v(", is calculated using Levenshtein Distance (Edit Distance) algorithm.\nWe compare the difference between current code line and its previous versions.")])])]),_v(" "),_c('h3',{attrs:{"id":"output-o-3"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--output")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-o")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#output-o-3","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--output OUTPUT_DIRECTORY")])]),_v(": Indicates where to save the report generated.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("OUTPUT_DIRECTORY")]),_v(" The location for the generated "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("reposense-report")]),_v(" folder."),_c('br'),_v("\nDefault: current directory")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-o")])]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--output ./foo")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-o ./foo")]),_v(" (the report will be in the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./foo/reposense-report")]),_v(" folder)")])]),_v(" "),_c('h3',{attrs:{"id":"period-p-3"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--period")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-p")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#period-p-3","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--period PERIOD")])]),_v(": Specifies the period of analysis window.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("PERIOD")]),_v(" The period of analysis window, in the format "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("nd")]),_v(" (for n days) or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("nw")]),_v(" (for n weeks). It is used to calculate end date if only start date is specified, or calculate end date if only start date is specified.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-p")])]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--period 30d")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--period 4w")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("If both start date and end date are not specified, the date of generating the report will be taken as the end date.")]),_v(" "),_c('li',[_v("May analyze the incorrect date range if used with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since d1")]),_v(". The program will throw a warning.")]),_v(" "),_c('li',[_v("Cannot be used with both "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--until")]),_v(". The program will throw an exception.")])])]),_v(" "),_c('h3',{attrs:{"id":"repo-repos-r-3"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repo")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repos")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-r")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#repo-repos-r-3","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repo REPO_LOCATION")])]),_v(": Specifies which repositories to analyze.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("REPO_LOCATION")]),_v(" A list of URLs or the disk location of the git repositories to analyze, separated by spaces.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-r")])]),_v(" "),_c('li',[_v("Examples:\n"),_c('ul',[_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repos https://github.com/reposense/RepoSense.git")])]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repo https://github.com/reposense/RepoSense.git c:/myRepose/foo/bar")]),_v(": analyzes the two specified repos (one remote, one local) and generates one report containing details of both.")])])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Cannot be used with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--config")]),_v(". This flag takes precedence over "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--config")]),_v(".")])]),_v(" "),_c('h3',{attrs:{"id":"shallow-cloning-s-3"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--shallow-cloning")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-S")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#shallow-cloning-s-3","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--shallow-cloning")])]),_v(": Clones repositories using Git's shallow cloning functionality, which can significantly reduce the time taken to clone large repositories. However, the flag should not be used for smaller repositories where the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(".git")]),_v(" file is smaller than 500 MB, as it would create overhead.")]),_v(" "),_c('ul',[_c('li',[_v("Default: RepoSense does not clone repositories using Git's shallow cloning functionality.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-S")]),_v(" (uppercase S)")]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--shallow-cloning")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-S")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Cannot be used with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--last-modified-date")]),_v(". This may result in an incorrect last modified date.")])]),_v(" "),_c('h3',{attrs:{"id":"since-s-3"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-s")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#since-s-3","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since START_DATE")])]),_v(": Specifies the start date for the period to be analyzed.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("START_DATE")]),_v(" The first day of the period to be analyzed, in the format "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("DD/MM/YYYY")]),_v("."),_c('br'),_v("\nDefault: one month before the current date")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-s")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since 21/10/2017")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-s 21/10/2017")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("If the start date is not specified, only commits made one month before the end date (if specified) or the date of generating the report, will be captured and analyzed.")]),_v(" "),_c('li',[_v("If "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("d1")]),_v(" is specified as the start date ("),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since d1")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-s d1")]),_v("), then the program will search for the earliest commit date of all repositories and use that as the start date.")]),_v(" "),_c('li',[_v("If "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("d1")]),_v(" is specified together with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--period")]),_v(", then the program will warn that the date range being analyzed may be incorrect.")])])]),_v(" "),_c('h3',{attrs:{"id":"timezone-t-3"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--timezone")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-t")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#timezone-t-3","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--timezone ZONE_ID")])]),_v(": Indicates the timezone to be used for the analysis.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ZONE_ID")]),_v(" The timezone in the format "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ZONE_ID[±hh[mm]]")]),_v("."),_c('br'),_v("\nDefault: system's default timezone")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-t")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--timezone UTC+08")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-t UTC-1030")])])]),_v(" "),_c('h3',{attrs:{"id":"until-u-3"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--until")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-u")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#until-u-3","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--until END_DATE")])]),_v(": Specifies the end date of the analysis period.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("END_DATE")]),_v(" The last date of the period to be analyzed, in the format "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("DD/MM/YYYY")]),_v("."),_c('br'),_v("\nDefault: current date")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-u")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--until 21/10/2017")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-u 21/10/2017")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Note: If the end date is not specified, the date of generating the report will be taken as the end date.")])]),_v(" "),_c('h3',{attrs:{"id":"version-v-3"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--version")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-V")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#version-v-3","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--version")])]),_v(": Shows the version of RepoSense.")]),_v(" "),_c('ul',[_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-V")]),_v(" (upper case)")])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Cannot be used with any other flags. This flag takes precedence over all other flags other than "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--help")]),_v(".")])]),_v(" "),_c('h3',{attrs:{"id":"view-v-3"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--view")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-v")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#view-v-3","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--view [REPORT_FOLDER]")])]),_v(": Specifies that the report should be opened in the default browser.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("REPORT_FOLDER")]),_v(" Optional. If specified, no analysis will be performed and the report specified by the argument will be opened."),_c('br'),_v("\nDefault: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./reposense-report")])]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-v")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--view")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-v")])])])],1)])],1),_v(" "),_c('p'),_v(" "),_c('h3',{attrs:{"id":"customize-using-csv-config-files"}},[_v("Customize using CSV config files"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#customize-using-csv-config-files","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_v("Another, more powerful, way to customize the report is by using dedicated config files.")]),_v(" In this case you need to use the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--config")]),_v(" flag instead of the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repo")]),_v(" flag when running RepoSense, as follows:")]),_v(" "),_c('div',{staticClass:"indented-level0"},[_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('span',[_c('span',{staticClass:"glyphicon glyphicon-log-in",attrs:{"aria-hidden":"true"}})]),_v(" Appendix: "),_c('strong',[_v("CLI syntax reference → "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("config")]),_v(" flag")])])]},proxy:true}])},[_v(" "),_c('div',[_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--config CONFIG_DIRECTORY")])]),_v(": Specifies that config files located in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("CONFIG_DIRECTORY")]),_v(" should be used to customize the report.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("CONFIG_DIRECTORY")]),_v(" The directory containing the config files. Should contain a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(" file. Optionally, can contain an "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(" file or/and a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("group-config.csv")]),_v(" file or/and a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("report-config.json")]),_v(" file or/and a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("blurbs.md")]),_v(" file.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-c")])]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar --config ./config")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("Cannot be used with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repos")]),_v(". The "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repos")]),_v(" flag will take precedence over this flag.")]),_v(" "),_c('li',[_v("If both "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repos")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--config")]),_v(" are not specified, RepoSense looks for config files in the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./config")]),_v(" directory.")]),_v(" "),_c('li',[_v("Config files must follow "),_c('a',{attrs:{"href":"/RepoSense/ug/configFiles.html"}},[_v("this")]),_v(" format.")])])])],1)])],1),_v(" "),_c('p'),_v(" "),_c('box',{attrs:{"type":"tip","seamless":""}},[_c('p',[_c('strong',[_v("Managing config files collaboratively")]),_v(": If you use RepoSense to monitor a large number of programmers, it may be more practical to get the programmers to submit PRs to update the config files as necessary ("),_c('tooltip',{scopedSlots:_u([{key:"content",fn:function(){return [_v("a coder realizes some of her code is missing from the report because she used multiple git usernames, and wants to add the additional usernames to the config file")]},proxy:true}])},[_v("example use case")]),_v(").")],1),_v(" "),_c('p',[_v("To ensure that their PRs are correct, you can use "),_c('a',{attrs:{"href":"https://www.netlify.com/blog/2016/07/20/introducing-deploy-previews-in-netlify/"}},[_v("Netlify "),_c('em',[_v("deploy previews")])]),_v(" to preview how the report would look like after the PR has been merged. More details are in the panels below.")]),_v(" "),_c('div',{staticClass:"indented-level0"},[_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('span',[_c('span',{staticClass:"glyphicon glyphicon-log-in",attrs:{"aria-hidden":"true"}})]),_v(" Appendix: "),_c('strong',[_v("Using RepoSense with Netlify → Setting up")])])]},proxy:true}])},[_v(" "),_c('div',[_c('box',{attrs:{"type":"warning","seamless":""}},[_c('p',[_v("Note that Netlify has a low limit for free tier users (only 300 "),_c('em',[_v("build minutes")]),_v(" per month as at June 2020 -- a single report generation can take 2-3 build minutes, longer if your report includes many/big repositories).")])]),_v(" "),_c('h2',{attrs:{"id":"setting-up-4"}},[_v("Setting up"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#setting-up-4","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('span',{staticClass:"badge bg-dark bigger-level0"},[_v("Step 1")]),_v(" "),_c('strong',[_v("Fork the "),_c('em',[_v("publish-RepoSense")]),_v(" repository")]),_v(" using this "),_c('a',{attrs:{"href":"https://github.com/RepoSense/publish-RepoSense/fork"}},[_v("link")]),_v(". Optionally, you can rename the fork to match your RepoSense report e.g., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("project-code-dashboard")]),_v(".")]),_v(" "),_c('p',[_c('span',{staticClass:"badge bg-dark bigger-level0"},[_v("Step 2")]),_v(" "),_c('strong',[_v("Set up Netlify for your fork")]),_v(" as described in this "),_c('a',{attrs:{"href":"https://www.netlify.com/blog/2016/09/29/a-step-by-step-guide-deploying-on-netlify/"}},[_v("guide")]),_v("."),_c('br'),_v(" "),_c('mark',[_v("You will need to use the following in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Step 5: Configure Your Settings")]),_v(" of that guide")]),_v(":")]),_v(" "),_c('ul',[_c('li',[_v("build command: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("pip install requests && ./run.sh")]),_c('br')]),_v(" "),_c('li',[_v("publish directory: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./reposense-report")])])]),_v(" "),_c('p',[_v("After Netlify finishes building the site, you should be able to see a dummy report at the URL of your Netlify site.")]),_v(" "),_c('p',[_c('span',{staticClass:"badge bg-dark bigger-level0"},[_v("Step 3")]),_v(" "),_c('strong',[_v("Generate the report you want")]),_v(" by updating the settings in your fork.")]),_v(" "),_c('ol',[_c('li',[_v("Go to the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("run.sh")]),_v(" file of your fork (on GitHub).")]),_v(" "),_c('li',[_v("Update the last line (i.e., the command for running RepoSense) to match the report you want to generate:"),_c('br'),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar --repos FULL_REPO_URL")]),_v(" (assuming you want to generate a default report for just one repo)"),_c('br'),_v("\ne.g., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar --repos https://github.com/reposense/RepoSense.git")]),_v(" ("),_c('mark',[_v("note the .git at the end of the repo URL")]),_v(")")]),_v(" "),_c('li',[_v("Commit the file. This will trigger Netlify to rebuild the report.")]),_v(" "),_c('li',[_v("Go to the URL of your Netlify site to see the updated RepoSense report (it might take about 2-5 minutes for Netlify to generate the report).")])])],1)])],1),_v(" "),_c('p'),_v(" "),_c('div',{staticClass:"indented-level0"},[_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('span',[_c('span',{staticClass:"glyphicon glyphicon-log-in",attrs:{"aria-hidden":"true"}})]),_v(" Appendix: "),_c('strong',[_v("Using RepoSense with Netlify → PR previews")])])]},proxy:true}])},[_v(" "),_c('div',[_c('h2',{attrs:{"id":"pr-previews"}},[_v("PR previews"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#pr-previews","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("After setting up Netlify for your repo containing RepoSense settings, when a PR comes in to that repo to update any setting, you can scroll down the PR page and in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("All checks have passed")]),_v(", click on the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Details")]),_v(" beside "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("deploy/netlify — Deploy preview ready!")]),_v(" to see a preview of the report as per the changes in the PR.\n"),_c('a',{attrs:{"href":"/RepoSense/images/publishingguide-netlifypreview.png","target":"_self"}},[_c('img',{staticClass:"img-fluid",attrs:{"src":"/RepoSense/images/publishingguide-netlifypreview.png","alt":"Netlify Preview","title":"Netlify Preview"}})])])])])],1),_v(" "),_c('p')]),_v(" "),_c('h3',{attrs:{"id":"get-target-repos-to-provide-more-info"}},[_v("Get target repos to provide more info"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#get-target-repos-to-provide-more-info","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_v("If feasible, you can also customize the target repos to play well with RepoSense")]),_v(" in the following two ways:")]),_v(" "),_c('p',[_v("1. Add a "),_c('em',[_v("standalone config file")]),_v(" to the repo to provide more config details to RepoSense. The format of the file is given below.")]),_v(" "),_c('div',{staticClass:"indented-level0"},[_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('span',[_c('span',{staticClass:"glyphicon glyphicon-log-in",attrs:{"aria-hidden":"true"}})]),_v(" Appendix: "),_c('strong',[_v("Standalone config file format")])])]},proxy:true}])},[_v(" "),_c('div',[_c('h2',{attrs:{"id":"config-json-standalone-config-file-3"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("config.json")]),_v(" (standalone config file)"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#config-json-standalone-config-file-3","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Repo owners can provide the following additional information to RepoSense using a config file that we call the "),_c('strong',[_c('em',[_v("standalone config file")])]),_v(":")]),_v(" "),_c('ul',[_c('li',[_v("which files/authors/commits to analyze/omit")]),_v(" "),_c('li',[_v("which git and git host usernames belong to which authors")]),_v(" "),_c('li',[_v("the display of an author")])]),_v(" "),_c('p',[_v("To use this feature, add a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("_reposense/config.json")]),_v(" to the root of your repo using the format in the example below ("),_c('a',{attrs:{"href":"https://github.com/reposense/RepoSense/blob/master/_reposense/config.json"}},[_v("another example")]),_v(") and "),_c('strong',[_v("commit it")]),_v(" (reason: RepoSense can see committed code only):")]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"no-line-numbers hljs json"}},[_c('span',[_v("{\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"ignoreGlobList\"")]),_v(": ["),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"about-us/**\"")]),_v(", "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"**index.html\"")]),_v("],\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"formats\"")]),_v(": ["),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"html\"")]),_v(", "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"css\"")]),_v("],\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"ignoreCommitList\"")]),_v(": ["),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"90018e49f129ce7e0abdc8b18e91c9813588c601\"")]),_v(", "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"67890def\"")]),_v(", "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"abc123..def456\"")]),_v("],\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"ignoreAuthorList\"")]),_v(": ["),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"charlie\"")]),_v("],\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"authors\"")]),_v(":\n")]),_c('span',[_v(" [\n")]),_c('span',[_v(" {\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"gitId\"")]),_v(": "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"alice\"")]),_v(",\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"emails\"")]),_v(": ["),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"alice@example.com\"")]),_v(", "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"alicet@example.com\"")]),_v("],\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"displayName\"")]),_v(": "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"Alice T.\"")]),_v(",\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"authorNames\"")]),_v(": ["),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"AT\"")]),_v(", "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"A\"")]),_v("],\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"ignoreGlobList\"")]),_v(": ["),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"**.css\"")]),_v("]\n")]),_c('span',[_v(" },\n")]),_c('span',[_v(" {\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"gitId\"")]),_v(": "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"bob\"")]),_v("\n")]),_c('span',[_v(" }\n")]),_c('span',[_v(" ]\n")]),_c('span',[_v("}\n")])])]),_c('p',[_v("Note: all fields are optional unless specified otherwise.")]),_v(" "),_c('p',[_c('strong',[_v("Fields to provide "),_c('em',[_v("repository-level")]),_v(" info")]),_v(":")]),_v(" "),_c('ul',[_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ignoreGlobList")]),_v(": Folders/files to ignore, specified using the "),_c('a',{attrs:{"href":"https://docs.oracle.com/javase/tutorial/essential/io/fileOps.html#glob"}},[_c('em',[_v("glob format")])]),_v(".")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("formats")]),_v(": File formats to analyze. Binary file formats, such as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("png")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("jpg")]),_v(", will be automatically labelled as the file type "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("binary")]),_v(" in the generated report. Default: all file formats")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ignoreCommitList")]),_v(": The list of commits to ignore during analysis. For accurate results, the commits should be provided with their full hash. Additionally, a range of commits can be specified using the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("..")]),_v(" notation e.g. "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("abc123..def456")]),_v(" (both inclusive).")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ignoreAuthorList")]),_v(": The list of authors to ignore during analysis. Authors specified in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("authors")]),_v(" field or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(" will be also be omitted if they are in this list. Authors should be specified by their "),_c('a',{attrs:{"href":"#a-note-about-git-author-name"}},[_v("Git Author Name")]),_v(".")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("fileSizeLimit")]),_v(": A file size limit for the repository in bytes as a single number without units, that will override the default file size limit. If not specified, the default file size limit will continue to be used.")])]),_v(" "),_c('p',[_c('strong',[_v("Fields to provide "),_c('em',[_v("author-level")]),_v(" info")]),_v(":"),_c('br'),_v("\nNote: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("authors")]),_v(" field should contain "),_c('em',[_v("all")]),_v(" authors that should be captured in the analysis.")]),_v(" "),_c('ul',[_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("gitId")]),_v(": Username of the author. "),_c('span',{staticClass:"badge bg-danger"},[_v("mandatory")]),_v(" field.")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("emails")]),_v(": Associated git emails of the author. For GitHub, this can be found in your "),_c('a',{attrs:{"href":"https://github.com/settings/emails"}},[_v("GitHub settings")]),_v(".")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("displayName")]),_v(": Name to display on the report for this author.")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("authorNames")]),_v(": Git Author Name(s) used in the author's commits. By default, RepoSense assumes an author would use their remote Git Host username as the Git username too. The meaning of "),_c('em',[_v("Git Author Name")]),_v(" is explained in "),_c('a',{attrs:{"href":"#a-note-about-git-author-name"}},[_c('em',[_v("A note about git author name")])]),_v(".")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ignoreGlobList")]),_v(": "),_c('em',[_v("Additional")]),_v(" (i.e. on top of the repo-level "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ignoreGlobList")]),_v(") folders/files to ignore for a specific author. The path glob syntax is specified by the "),_c('a',{attrs:{"href":"https://docs.oracle.com/javase/tutorial/essential/io/fileOps.html#glob"}},[_c('em',[_v("glob format")])]),_v(". In the example above, the actual "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ignoreGlobList")]),_v(" for "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("alice")]),_v(" would be "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("[\"about-us/**\", \"**index.html\", \"**.css\"]")]),_v(".")])]),_v(" "),_c('p',[_v("To verify your standalone configuration is as intended, add the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("_reposense/config.json")]),_v(" to your local copy of repo and run RepoSense against it as follows:"),_c('br')]),_v(" "),_c('ul',[_c('li',[_v("Format: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar --repo LOCAL_REPO_LOCATION")]),_v(" "),_c('br')]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar --repo c:/myRepose/foo/bar")]),_c('br'),_v("\nAfter that, view the report to see if the configuration you specified in the config file is being reflected correctly in the report.")])]),_v(" "),_c('h2',{attrs:{"id":"a-note-about-git-author-name-3"}},[_v("A note about git author name"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#a-note-about-git-author-name-3","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Git Author Name")]),_v(" refers to the customizable author's display name set in the local "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(".gitconfig")]),_v(" file. For example, in the Git Log's display:")]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"no-line-numbers hljs"}},[_c('span',[_v("...\n")]),_c('span',[_v("commit cd7f610e0becbdf331d5231887d8010a689f87c7\n")]),_c('span',[_v("Author: ConfiguredAuthorName \n")]),_c('span',[_v("Date: Fri Feb 9 19:14:41 2018 +0800\n")]),_c('span',[_v("\n")]),_c('span',[_v(" Make some changes to show my new author's name\n")]),_c('span',[_v("\n")]),_c('span',[_v("commit e3f699fd4ef128eebce98d5b4e5b3bb06a512f49\n")]),_c('span',[_v("Author: ActualGitHostId \n")]),_c('span',[_v("Date: Fri Feb 9 19:13:13 2018 +0800\n")]),_c('span',[_v("\n")]),_c('span',[_v(" Initial commit\n")]),_c('span',[_v(" ...\n")])])]),_c('p',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ActualGitHostId")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ConfiguredAuthorName")]),_v(" are both "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Git Author Name")]),_v(" of the same author."),_c('br'),_v("\nTo find the author name that you are currently using for your current git repository, run the following command within your git repository:")]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"no-line-numbers hljs"}},[_c('span',[_v("git config user.name\n")])])]),_c('p',[_v("To set the author name to the value you want (e.g., to set it to your GitHub username) for your current git repository, you can use the following command ("),_c('a',{attrs:{"href":"https://www.git-tower.com/learn/git/faq/change-author-name-email"}},[_v("more info")]),_v("):")]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"no-line-numbers hljs"}},[_c('span',[_v("git config user.name \"YOUR_AUTHOR_NAME”\n")])])]),_c('p',[_v("To set the author name to use a default value you want for future git repositories, you can use the following command:")]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"no-line-numbers hljs"}},[_c('span',[_v("git config --global user.name \"YOUR_AUTHOR_NAME”\n")])])]),_c('p',[_v("RepoSense expects the Git Author Name to be the same as author's username on the Git hosting platform (GitHub, GitLab, BitBucket). If an author's "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Git Author Name")]),_v(" is different from their username on the Git hosting platform, the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Git Author Name")]),_v(" needs to be specified in the standalone config file. If the author has more than one "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Git Author Name")]),_v(", multiple values can be entered too.")]),_v(" "),_c('box',{attrs:{"type":"warning","seamless":""}},[_c('p',[_v("Note: Symbols such as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("\"")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("!")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("/")]),_v(" etc. in your author name will be omitted, which may reduce the accuracy of the analysis if 2 names in the repository are approximately similar.")])])],1)])],1),_v(" "),_c('p'),_v(" "),_c('p',[_v("2. To have more precise control over which code segment is attributed to which author, authors can annotate their code using "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("@@author")]),_v(" tags, as explained below.")]),_v(" "),_c('div',{staticClass:"indented-level0"},[_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('span',[_c('span',{staticClass:"glyphicon glyphicon-log-in",attrs:{"aria-hidden":"true"}})]),_v(" Appendix: "),_c('strong',[_v("Using "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("@@author")]),_v(" tags")])])]},proxy:true}])},[_v(" "),_c('div',[_c('h1',{staticClass:"display-4",attrs:{"id":"appendix-using-author-tags"}},[_c('span',[_v("Appendix: Using "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("@@author")]),_v(" tags")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#appendix-using-author-tags","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{staticClass:"lead"},[_c('p',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("@@author")]),_v(" tags is a rather invasive but sometimes necessary way to provide more information to RepoSense, by annotating the code being analyzed.")])]),_v(" "),_c('p',[_v("If you want to override the code authorship deduced by RepoSense (which is based on Git blame/log data), you can use "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("@@author")]),_v(" tags to specify certain code segments that should be credited to a certain author irrespective of git history. An example scenario where this is useful is when a method was originally written by one author but a second author did some minor refactoring to it; in this case, RepoSense might attribute the code to the second author while you may want to attribute the code to the first author.")]),_v(" "),_c('p',[_v("There are 2 types of "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("@@author")]),_v(" tags:")]),_v(" "),_c('ul',[_c('li',[_v("Start Tags (format: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("@@author AUTHOR_GIT_AUTHOR_NAME")]),_v("): A start tag indicates the start of a code segment written by the author identified by the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("AUTHOR_GIT_AUTHOR_NAME")]),_v(".")]),_v(" "),_c('li',[_v("End Tags (format: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("@@author")]),_v("): Optional. An end tag indicates the end of a code segment written by the author identified by the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("AUTHOR_GIT_AUTHOR_NAME")]),_v(" of the start tag.")])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("If an end tag is not provided, the code till the next start tag (or the end of the file) will be attributed to the author specified in the start tag above. Use only when necessary to minimize polluting your code with these extra tags.")])]),_v(" "),_c('box',{attrs:{"type":"warning","seamless":""}},[_c('p',[_v("If an end tag is provided without a corresponding start tag, the code until the next start tag, the next end tag, or the end of the file, will not be attributed to any author. This should only be used if the code should not be attributed to any author.")])]),_v(" "),_c('p',[_v("The "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("@@author")]),_v(" tags should be enclosed within a single-line comment, using the comment syntax of the file in concern. Below are some examples:")]),_v(" "),_c('p',[_c('a',{attrs:{"href":"/RepoSense/images/add-author-tags.png","target":"_self"}},[_c('img',{staticClass:"img-fluid",attrs:{"src":"/RepoSense/images/add-author-tags.png","alt":"author tags"}})])]),_v(" "),_c('p',[_v("Currently, the following comment formats are supported:")]),_v(" "),_c('ul',[_c('li',[_v("// @@author authorName")]),_v(" "),_c('li',[_v("/* @@author authorName */")]),_v(" "),_c('li',[_v("/* @@author authorName")]),_v(" "),_c('li',[_v("# @@author authorName")]),_v(" "),_c('li',[_v("% @@author authorName")]),_v(" "),_c('li',[_v("")]),_v(" "),_c('li',[_v("")]),_v(" "),_c('li',[_v("[//]: # (@@author authorName)")])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("RepoSense checks whether the line matches the supported comment formats. If the line does not match the formats,\nRepoSense treats it as a normal line.")]),_v(" "),_c('p',[_v("The code until the next start tag, the end tag, or the end of file will be attributed to that author.")])]),_v(" "),_c('p',[_v("Note: Remember to "),_c('strong',[_v("commit")]),_v(" the files after the changes. (reason: RepoSense can see committed code only)")]),_v(" "),_c('p',[_v("Special thanks to "),_c('a',{attrs:{"href":"https://github.com/se-edu/collate"}},[_v("Collate project")]),_v(" for providing the inspiration for this functionality.")])],1)])],1),_v(" "),_c('p'),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("In both instances, it is "),_c('strong',[_v("necessary to commit any changes")]),_v(" for them to be detected by RepoSense.")])]),_v(" "),_c('p',[_v("3. Add a git "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(".mailmap")]),_v(" file at the top-level of the repository, specifying mapped authors/commiters and/or e-mail addresses as per "),_c('a',{attrs:{"href":"https://git-scm.com/docs/gitmailmap"}},[_v("gitmailmap documentation")]),_v(". Any mappings specified here will be applied by git before all other RepoSense configurations. Configuration via "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(".mailmap")]),_v(" is particularly useful if you want the mapping to apply for all git commands as well instead of just for RepoSense.")]),_v(" "),_c('h3',{attrs:{"id":"personalizing-reports"}},[_v("Personalizing Reports"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#personalizing-reports","onclick":"event.stopPropagation()"}})]),_v(" "),_c('h4',{attrs:{"id":"add-a-title"}},[_v("Add a title"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#add-a-title","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("A title component can be added by creating a file titled "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("title.md")]),_v(" in the assets directory. You can specify the assets directory according to the reference below:")]),_v(" "),_c('div',{staticClass:"indented-level0"},[_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('span',[_c('span',{staticClass:"glyphicon glyphicon-log-in",attrs:{"aria-hidden":"true"}})]),_v(" Appendix: "),_c('strong',[_v("CLI syntax reference → "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("assets")]),_v(" flag")])])]},proxy:true}])},[_v(" "),_c('div',[_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--assets ASSETS_DIRECTORY")])]),_v(": Specifies where to place assets for report generation.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ASSETS_DIRECTORY")]),_v(" The directory containing the assets files. A "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("favicon.ico")]),_v(" file can be placed here to customize the favicon of the dashboard, while a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("title.md")]),_v(" file can be placed to customize the "),_c('a',{attrs:{"href":"https://reposense.org/ug/customizingReports.html#add-a-title"}},[_v("title")]),_v(" of the report using "),_c('a',{attrs:{"href":"https://www.markdownguide.org/basic-syntax/"}},[_v("Markdown syntax")]),_v(".")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-a")])]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--assets ./assets")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-a ./assets")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("If "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--assets")]),_v(" is not specified, RepoSense looks for assets in the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./assets")]),_v(" directory.")])])])],1)])],1),_v(" "),_c('p'),_v(" "),_c('p',[_v("The title can render a combination of Markdown/HTML and plaintext ("),_c('a',{attrs:{"href":"https://github.com/reposense/RepoSense/blob/master/docs/ug/title.md"}},[_v("example")]),_v("), and will appear on the top of the left panel as shown below:\n"),_c('a',{attrs:{"href":"/RepoSense/images/title-example.png","target":"_self"}},[_c('img',{staticClass:"img-fluid",attrs:{"src":"/RepoSense/images/title-example.png","alt":"Title Component Example"}})])]),_v(" "),_c('p',[_v("Do note that the width of the title is bound by the width of the left panel.")]),_v(" "),_c('p',[_v("For more information on how to use Markdown, see the "),_c('a',{attrs:{"href":"https://www.markdownguide.org/"}},[_v("Markdown Guide")]),_v(".")]),_v(" "),_c('h4',{attrs:{"id":"add-blurbs-for-branches"}},[_v("Add blurbs for branches"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#add-blurbs-for-branches","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("A blurb can be added for a repository branch by creating a file titled "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("blurbs.md")]),_v(" in the config directory. The blurbs will be visible when grouping by "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repo/Branch")]),_v(". The format of the file is given below:")]),_v(" "),_c('div',{staticClass:"indented-level0"},[_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('span',[_c('span',{staticClass:"glyphicon glyphicon-log-in",attrs:{"aria-hidden":"true"}})]),_v(" Appendix: "),_c('strong',[_v("Config files format")])])]},proxy:true}])},[_v(" "),_c('div',[_c('h2',{attrs:{"id":"blurbs-md-3"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("blurbs.md")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#blurbs-md-3","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("You can optionally use "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("blurbs.md")]),_v(" to add blurbs in Markdown syntax for repository branches. These blurbs will be seen when grouping by "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repo/Branch")]),_v(". ("),_c('a',{attrs:{"href":"https://github.com/reposense/RepoSense/blob/master/docs/ug/blurbs.md"}},[_v("example")]),_v(")")]),_v(" "),_c('p',[_c('strong',[_v("Format")]),_v(":")]),_v(" "),_c('ul',[_c('li',[_v("First line in section: Link to the repository branch.")]),_v(" "),_c('li',[_v("Second line onwards: Blurb content.")]),_v(" "),_c('li',[_v("Delimiter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("")]),_v(". Everything on the line after the delimiter will be ignored.")])])])])],1),_v(" "),_c('p'),_v(" "),_c('p',[_v("Specifying the config directory can be done as follows:")]),_v(" "),_c('div',{staticClass:"indented-level0"},[_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('span',[_c('span',{staticClass:"glyphicon glyphicon-log-in",attrs:{"aria-hidden":"true"}})]),_v(" Appendix: "),_c('strong',[_v("CLI syntax reference → "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("config")]),_v(" flag")])])]},proxy:true}])},[_v(" "),_c('div',[_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--config CONFIG_DIRECTORY")])]),_v(": Specifies that config files located in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("CONFIG_DIRECTORY")]),_v(" should be used to customize the report.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("CONFIG_DIRECTORY")]),_v(" The directory containing the config files. Should contain a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(" file. Optionally, can contain an "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(" file or/and a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("group-config.csv")]),_v(" file or/and a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("report-config.json")]),_v(" file or/and a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("blurbs.md")]),_v(" file.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-c")])]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar --config ./config")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("Cannot be used with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repos")]),_v(". The "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repos")]),_v(" flag will take precedence over this flag.")]),_v(" "),_c('li',[_v("If both "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repos")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--config")]),_v(" are not specified, RepoSense looks for config files in the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./config")]),_v(" directory.")]),_v(" "),_c('li',[_v("Config files must follow "),_c('a',{attrs:{"href":"/RepoSense/ug/configFiles.html"}},[_v("this")]),_v(" format.")])])])],1)])],1),_v(" "),_c('p')],1)])],1),_v(" "),_c('p'),_v(" "),_c('h1',{attrs:{"id":"3-share-your-reports"}},[_c('thumbnail',{attrs:{"circle":"","background":"#006600","font-color":"white","size":"50"}},[_v("3")]),_v(" "),_c('strong',[_v("Share")]),_v(" your reports"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#3-share-your-reports","onclick":"event.stopPropagation()"}})],1),_v(" "),_c('p',[_v("Finally, you can learn how to share those reports with others, and how to automate the whole process.")]),_v(" "),_c('div',{staticClass:"indented-level0"},[_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('span',[_c('span',{staticClass:"glyphicon glyphicon-log-in",attrs:{"aria-hidden":"true"}})]),_v(" "),_c('strong',[_v("Sharing reports")])])]},proxy:true}])},[_v(" "),_c('div',[_c('h1',{staticClass:"display-4",attrs:{"id":"sharing-reports"}},[_c('span',[_v("Sharing reports")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#sharing-reports","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{staticClass:"lead"},[_c('p',[_c('strong',[_v("Often, you would want to share the RepoSense report with others.")]),_v(" For example, a teacher using RepoSense for a programming class might want to share the report privately with tutors or publish it so that everyone can see it.")])]),_v(" "),_c('p',[_v("The sections below explain various ways of sharing a RepoSense report.")]),_v(" "),_c('h3',{attrs:{"id":"share-privately"}},[_v("Share privately"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#share-privately","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("To share a RepoSense report privately, simply find a way to share the folder containing the report (by default, it will be in a folder named "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("reposense-report")]),_v("). For example, you can zip that folder and share it with the intended recipients.")]),_v(" "),_c('p',[_v("You can point the recipients to the "),_c('a',{attrs:{"href":"/RepoSense/ug/usingReports.html"}},[_c('em',[_c('strong',[_v("Using reports")])])]),_v(" section for guidance on how to view reports.")]),_v(" "),_c('h3',{attrs:{"id":"publish-on-the-web"}},[_v("Publish on the web"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#publish-on-the-web","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("As RepoSense reports are in a web page format, you can publish a report by simply uploading it onto any web hosting service. Given below are several options that not only allow to publish reports, but "),_c('strong',[_v("also enable various levels of automating")]),_v(" the entire process (e.g., automatically update the report daily).")]),_v(" "),_c('div',{staticClass:"indented-level0"},[_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('span',[_c('span',{staticClass:"glyphicon glyphicon-log-in",attrs:{"aria-hidden":"true"}})]),_v(" Appendix: "),_c('strong',[_v("Using RepoSense with GitHub Actions")])])]},proxy:true}])},[_v(" "),_c('div',[_c('h1',{staticClass:"display-4",attrs:{"id":"appendix-reposense-with-github-actions"}},[_c('span',[_v("Appendix: RepoSense with GitHub Actions")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#appendix-reposense-with-github-actions","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{attrs:{"id":"section-setting-up"}},[_c('div',{staticClass:"lead"},[_c('p',[_v("You can use "),_c('a',{attrs:{"href":"https://github.com/features/actions"}},[_c('em',[_v("GitHub Actions")])]),_v(" (together with other GitHub tools) to automate the generating and publishing of RepoSense reports.")])]),_v(" "),_c('h2',{attrs:{"id":"setting-up-5"}},[_v("Setting up"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#setting-up-5","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',[_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("The instructions below assume you are using GitHub pages to host your report.")])]),_v(" "),_c('p',[_c('span',{staticClass:"badge bg-dark bigger-level0"},[_v("Step 1")]),_v(" "),_c('strong',[_v("Fork the "),_c('em',[_v("publish-RepoSense")]),_v(" repository")]),_v(" using this "),_c('a',{attrs:{"href":"https://github.com/RepoSense/publish-RepoSense/fork"}},[_v("link")]),_v(". Optionally, you can rename the fork to match your RepoSense report e.g., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("project-code-dashboard")]),_v(".")])],1),_v(" "),_c('p',[_c('span',{staticClass:"badge bg-dark bigger-level0"},[_v("Step 2")]),_v(" "),_c('strong',[_v("Activate GitHub Actions on the forked repository:")])]),_v(" "),_c('ol',[_c('li',[_v("Go to the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Actions")]),_v(" page of your fork of the "),_c('a',{attrs:{"href":"https://github.com/reposense/publish-RepoSense"}},[_v("publish-RepoSense")]),_v(" repo.")]),_v(" "),_c('li',[_v("Click on the green button that says "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("I understand my workflows, go ahead and enable them")]),_v(" to enable GitHub Actions on your new repository.")])]),_v(" "),_c('p',[_c('span',{staticClass:"badge bg-dark bigger-level0"},[_v("Step 3")]),_v(" "),_c('strong',[_v("Update report configuration:")])]),_v(" "),_c('div',[_c('p',[_v("In your fork, edit "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("run.sh")]),_v(" (and if applicable, "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("group-config.csv")]),_v(") to customize the command line parameters or repositories to be analyzed.")]),_v(" "),_c('div',{staticClass:"indented-level0"},[_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('span',[_c('span',{staticClass:"glyphicon glyphicon-log-in",attrs:{"aria-hidden":"true"}})]),_v(" Appendix: "),_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("run.sh")]),_v(" format")])])]},proxy:true}])},[_v(" "),_c('div',[_c('h1',{staticClass:"display-4",attrs:{"id":"appendix-run-sh-format-3"}},[_c('span',[_v("Appendix: run.sh format")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#appendix-run-sh-format-3","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{staticClass:"lead"},[_c('p',[_c('a',{attrs:{"href":"https://github.com/reposense/publish-RepoSense/blob/master/run.sh"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("run.sh")])]),_v(" is a script used for automating RepoSense report generation.")])]),_v(" "),_c('h3',{attrs:{"id":"customizing-the-reposense-command-3"}},[_v("Customizing the RepoSense command"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#customizing-the-reposense-command-3","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("You can update the RepoSense command (i.e., the last line) in the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("run.sh")]),_v(" to match your needs.")]),_v(" "),_c('div',{staticClass:"indented-level0"},[_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('span',[_c('span',{staticClass:"glyphicon glyphicon-log-in",attrs:{"aria-hidden":"true"}})]),_v(" Appendix: "),_c('strong',[_v("CLI syntax reference")])])]},proxy:true}])},[_v(" "),_c('div',[_c('h1',{staticClass:"display-4",attrs:{"id":"appendix-cli-syntax-reference-4"}},[_c('span',[_v("Appendix: CLI syntax reference")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#appendix-cli-syntax-reference-4","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{staticClass:"lead"},[_c('p',[_v("The command "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar")]),_v(" takes several flags.")])]),_v(" "),_c('box',[_c('p',[_c('strong',[_v("Examples")]),_v(":")]),_v(" "),_c('p',[_v("An example of a command using most parameters:"),_c('br'),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar --repos https://github.com/reposense/RepoSense.git --output ./report_folder --since 31/1/2017 --until 31/12/2018 --formats java adoc xml --view --ignore-standalone-config --last-modified-date --timezone UTC+08 --find-previous-authors --analyze-authorship --originality-threshold 0.66")])]),_v(" "),_c('p',[_v("Same command as above but using most parameters in alias format:"),_c('br'),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar -r https://github.com/reposense/RepoSense.git -o ./report_folder -s 31/1/2017 -u 31/12/2018 -f java adoc xml -v -i -l -t UTC+08 -F -A -ot 0.66")])])]),_v(" "),_c('p',[_v("The section below provides explanations for each of the flags.")]),_v(" "),_c('h3',{attrs:{"id":"analyze-authorship-a-4"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--analyze-authorship")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-A")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#analyze-authorship-a-4","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--analyze-authorship")])]),_v(": Performs further analysis to distinguish between partial and full credit attribution for\nlines of code assigned to the author.")]),_v(" "),_c('ul',[_c('li',[_v("Default: this feature is turned "),_c('em',[_c('strong',[_v("off")])]),_v(" by default and the author will receive partial credits for all lines of\ncode, as the code lines are at least partial credit but may not qualify for full credit.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-A")]),_v(" (upper case)")]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--analyze-authorship")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-A")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("A darker background colour represents full credit, while a lighter background colour represents partial credit.")]),_v(" "),_c('p',[_v("If the code is attributed to a different author by the user via "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("@@author")]),_v(" tag, then the new author will be given\npartial credit.")])]),_v(" "),_c('h3',{attrs:{"id":"assets-a-4"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--assets")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-a")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#assets-a-4","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{attrs:{"id":"section-assets"}},[_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--assets ASSETS_DIRECTORY")])]),_v(": Specifies where to place assets for report generation.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ASSETS_DIRECTORY")]),_v(" The directory containing the assets files. A "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("favicon.ico")]),_v(" file can be placed here to customize the favicon of the dashboard, while a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("title.md")]),_v(" file can be placed to customize the "),_c('a',{attrs:{"href":"https://reposense.org/ug/customizingReports.html#add-a-title"}},[_v("title")]),_v(" of the report using "),_c('a',{attrs:{"href":"https://www.markdownguide.org/basic-syntax/"}},[_v("Markdown syntax")]),_v(".")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-a")])]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--assets ./assets")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-a ./assets")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("If "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--assets")]),_v(" is not specified, RepoSense looks for assets in the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./assets")]),_v(" directory.")])])])],1),_v(" "),_c('h3',{attrs:{"id":"config-c-4"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--config")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-c")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#config-c-4","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{attrs:{"id":"section-config"}},[_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--config CONFIG_DIRECTORY")])]),_v(": Specifies that config files located in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("CONFIG_DIRECTORY")]),_v(" should be used to customize the report.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("CONFIG_DIRECTORY")]),_v(" The directory containing the config files. Should contain a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(" file. Optionally, can contain an "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(" file or/and a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("group-config.csv")]),_v(" file or/and a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("report-config.json")]),_v(" file or/and a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("blurbs.md")]),_v(" file.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-c")])]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar --config ./config")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("Cannot be used with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repos")]),_v(". The "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repos")]),_v(" flag will take precedence over this flag.")]),_v(" "),_c('li',[_v("If both "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repos")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--config")]),_v(" are not specified, RepoSense looks for config files in the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./config")]),_v(" directory.")]),_v(" "),_c('li',[_v("Config files must follow "),_c('a',{attrs:{"href":"/RepoSense/ug/configFiles.html"}},[_v("this")]),_v(" format.")])])])],1),_v(" "),_c('h3',{attrs:{"id":"formats-f-4"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--formats")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-f")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#formats-f-4","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--formats LIST_OF_FORMATS")])]),_v(": Specifies which file extensions to be included in the analysis.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("LIST_OF_FORMATS")]),_v(" A space-separated list of file extensions that should be included in the analysis."),_c('br'),_v("\nDefault: all file formats")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-f")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--formats css fxml gradle")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-f css fxml gradle")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Binary file formats, such as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("jpg")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("png")]),_v(","),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("exe")]),_v(","),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("zip")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("rar")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("docx")]),_v(", and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("pptx")]),_v(", all will be labelled as the file type "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("binary")]),_v(" in the generated report.")])]),_v(" "),_c('h3',{attrs:{"id":"find-previous-authors-f-4"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--find-previous-authors")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-F")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#find-previous-authors-f-4","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--find-previous-authors")])]),_v(": Utilizes Git blame's ignore revisions functionality, RepoSense will attempt to blame the line changes caused by commits in the ignore commit list to the previous authors who altered those lines (if available).")]),_v(" "),_c('ul',[_c('li',[_v("Default: RepoSense will assume that no authors are responsible for the code changes in the lines altered by commits in the ignore commit list.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-F")]),_v(" (uppercase F)")]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--find-previous-authors")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-F")])])]),_v(" "),_c('h3',{attrs:{"id":"help-h-4"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--help")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-h")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#help-h-4","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--help")])]),_v(": Shows the help message.")]),_v(" "),_c('ul',[_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-h")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Cannot be used with any other flags. This flag takes precedence over all other flags.")])]),_v(" "),_c('h3',{attrs:{"id":"ignore-standalone-config-i-4"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--ignore-standalone-config")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-i")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#ignore-standalone-config-i-4","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--ignore-standalone-config")])]),_v(": Specifies that the standalone config file in the repo should be ignored.")]),_v(" "),_c('ul',[_c('li',[_v("Default: the standalone config file is not ignored")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-i")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--ignore-standalone-config")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-i")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("This flag overrides the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Ignore standalone config")]),_v(" field in the CSV config file.")])]),_v(" "),_c('h3',{attrs:{"id":"ignore-filesize-limit-i-4"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--ignore-filesize-limit")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-I")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#ignore-filesize-limit-i-4","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--ignore-filesize-limit")])]),_v(": Specifies that the file size limit (both default and user-defined) should be ignored during the analysis.")]),_v(" "),_c('ul',[_c('li',[_v("Default: the file size limit is not ignored")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-I")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--ignore-filesize-limit")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-I")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("All files are subject to a default file size limit or a custom size limit set by the user. Most files should not be\naffected by the default size limit. This flag can be useful for including files in your report that are affected by\nthe size limit. Note that this flag may result in large report sizes and/or slower report generation.")])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("This flag overrides the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Ignore file size limit")]),_v(" field in the CSV config file.")])]),_v(" "),_c('h3',{attrs:{"id":"last-modified-date-l-4"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--last-modified-date")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-l")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#last-modified-date-l-4","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--last-modified-date")])]),_v(": Specifies that the last modified date of each line of code should be added to "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("authorship.json")]),_v(".")]),_v(" "),_c('ul',[_c('li',[_v("Default: the last modified date of each line of code will not be added to "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("authorship.json")])]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-l")]),_v(" (lowercase L)")]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--last-modified-date")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-l")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("Cannot be used with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--shallow-cloning")]),_v(". This may result in an incorrect last modified date.")]),_v(" "),_c('li',[_v("The last modified dates will be in the same timezone specified with the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--timezone")]),_v(" flag.")])])]),_v(" "),_c('h3',{attrs:{"id":"originality-threshold-ot-4"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--originality-threshold")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-ot")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#originality-threshold-ot-4","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--originality-threshold [VALUE]")])]),_v(": Specifies the cut-off point for partial and full credit\nin "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--analyze-authorship")]),_v(". Author will be given full credit if their contribution exceeds this threshold, else partial\ncredit is given.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("VALUE")]),_v(" Optional. Acceptable range: [0.0, 1.0]."),_c('br'),_v("\nDefault: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("0.51")])]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-ot")])]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--originality-threshold 0.66")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-ot 0.66")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("Requires "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--analyze-authorship")]),_v(" flag.")]),_v(" "),_c('li',[_v("An author's contribution, or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("originality score")]),_v(", is calculated using Levenshtein Distance (Edit Distance) algorithm.\nWe compare the difference between current code line and its previous versions.")])])]),_v(" "),_c('h3',{attrs:{"id":"output-o-4"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--output")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-o")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#output-o-4","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--output OUTPUT_DIRECTORY")])]),_v(": Indicates where to save the report generated.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("OUTPUT_DIRECTORY")]),_v(" The location for the generated "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("reposense-report")]),_v(" folder."),_c('br'),_v("\nDefault: current directory")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-o")])]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--output ./foo")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-o ./foo")]),_v(" (the report will be in the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./foo/reposense-report")]),_v(" folder)")])]),_v(" "),_c('h3',{attrs:{"id":"period-p-4"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--period")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-p")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#period-p-4","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--period PERIOD")])]),_v(": Specifies the period of analysis window.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("PERIOD")]),_v(" The period of analysis window, in the format "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("nd")]),_v(" (for n days) or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("nw")]),_v(" (for n weeks). It is used to calculate end date if only start date is specified, or calculate end date if only start date is specified.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-p")])]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--period 30d")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--period 4w")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("If both start date and end date are not specified, the date of generating the report will be taken as the end date.")]),_v(" "),_c('li',[_v("May analyze the incorrect date range if used with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since d1")]),_v(". The program will throw a warning.")]),_v(" "),_c('li',[_v("Cannot be used with both "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--until")]),_v(". The program will throw an exception.")])])]),_v(" "),_c('h3',{attrs:{"id":"repo-repos-r-4"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repo")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repos")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-r")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#repo-repos-r-4","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repo REPO_LOCATION")])]),_v(": Specifies which repositories to analyze.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("REPO_LOCATION")]),_v(" A list of URLs or the disk location of the git repositories to analyze, separated by spaces.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-r")])]),_v(" "),_c('li',[_v("Examples:\n"),_c('ul',[_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repos https://github.com/reposense/RepoSense.git")])]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repo https://github.com/reposense/RepoSense.git c:/myRepose/foo/bar")]),_v(": analyzes the two specified repos (one remote, one local) and generates one report containing details of both.")])])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Cannot be used with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--config")]),_v(". This flag takes precedence over "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--config")]),_v(".")])]),_v(" "),_c('h3',{attrs:{"id":"shallow-cloning-s-4"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--shallow-cloning")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-S")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#shallow-cloning-s-4","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--shallow-cloning")])]),_v(": Clones repositories using Git's shallow cloning functionality, which can significantly reduce the time taken to clone large repositories. However, the flag should not be used for smaller repositories where the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(".git")]),_v(" file is smaller than 500 MB, as it would create overhead.")]),_v(" "),_c('ul',[_c('li',[_v("Default: RepoSense does not clone repositories using Git's shallow cloning functionality.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-S")]),_v(" (uppercase S)")]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--shallow-cloning")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-S")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Cannot be used with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--last-modified-date")]),_v(". This may result in an incorrect last modified date.")])]),_v(" "),_c('h3',{attrs:{"id":"since-s-4"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-s")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#since-s-4","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since START_DATE")])]),_v(": Specifies the start date for the period to be analyzed.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("START_DATE")]),_v(" The first day of the period to be analyzed, in the format "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("DD/MM/YYYY")]),_v("."),_c('br'),_v("\nDefault: one month before the current date")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-s")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since 21/10/2017")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-s 21/10/2017")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("If the start date is not specified, only commits made one month before the end date (if specified) or the date of generating the report, will be captured and analyzed.")]),_v(" "),_c('li',[_v("If "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("d1")]),_v(" is specified as the start date ("),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since d1")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-s d1")]),_v("), then the program will search for the earliest commit date of all repositories and use that as the start date.")]),_v(" "),_c('li',[_v("If "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("d1")]),_v(" is specified together with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--period")]),_v(", then the program will warn that the date range being analyzed may be incorrect.")])])]),_v(" "),_c('h3',{attrs:{"id":"timezone-t-4"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--timezone")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-t")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#timezone-t-4","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--timezone ZONE_ID")])]),_v(": Indicates the timezone to be used for the analysis.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ZONE_ID")]),_v(" The timezone in the format "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ZONE_ID[±hh[mm]]")]),_v("."),_c('br'),_v("\nDefault: system's default timezone")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-t")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--timezone UTC+08")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-t UTC-1030")])])]),_v(" "),_c('h3',{attrs:{"id":"until-u-4"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--until")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-u")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#until-u-4","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--until END_DATE")])]),_v(": Specifies the end date of the analysis period.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("END_DATE")]),_v(" The last date of the period to be analyzed, in the format "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("DD/MM/YYYY")]),_v("."),_c('br'),_v("\nDefault: current date")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-u")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--until 21/10/2017")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-u 21/10/2017")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Note: If the end date is not specified, the date of generating the report will be taken as the end date.")])]),_v(" "),_c('h3',{attrs:{"id":"version-v-4"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--version")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-V")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#version-v-4","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--version")])]),_v(": Shows the version of RepoSense.")]),_v(" "),_c('ul',[_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-V")]),_v(" (upper case)")])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Cannot be used with any other flags. This flag takes precedence over all other flags other than "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--help")]),_v(".")])]),_v(" "),_c('h3',{attrs:{"id":"view-v-4"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--view")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-v")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#view-v-4","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--view [REPORT_FOLDER]")])]),_v(": Specifies that the report should be opened in the default browser.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("REPORT_FOLDER")]),_v(" Optional. If specified, no analysis will be performed and the report specified by the argument will be opened."),_c('br'),_v("\nDefault: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./reposense-report")])]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-v")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--view")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-v")])])])],1)])],1),_v(" "),_c('p'),_v(" "),_c('h3',{attrs:{"id":"specifying-which-version-of-reposense-to-use-3"}},[_v("Specifying which version of RepoSense to use"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#specifying-which-version-of-reposense-to-use-3","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Depending on which version you wish to use for report generation, add one of the following flags to the line "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./get-reposense.py")]),_v(" in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("run.sh")]),_v(" (e.g., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./get-reposense.py --release")]),_v("):")]),_v(" "),_c('ul',[_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--release")]),_v(": Use the latest release (Stable)")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--master")]),_v(": Use the latest version of the master branch")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--tag TAG")]),_v(" (e.g. "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--tag v1.6.1")]),_v("): Use the version identified by the Git tag given")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--commit COMMIT")]),_v(" (e.g. "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--commit abc123")]),_v("): Use the version identified by the Git commit SHA given")])])])])],1),_v(" "),_c('p'),_v(" "),_c('div',{staticClass:"indented-level0"},[_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('span',[_c('span',{staticClass:"glyphicon glyphicon-log-in",attrs:{"aria-hidden":"true"}})]),_v(" Appendix: "),_c('strong',[_v("Config files format")])])]},proxy:true}])},[_v(" "),_c('div',[_c('h1',{staticClass:"display-4",attrs:{"id":"appendix-config-files-format-3"}},[_c('span',[_v("Appendix: Config files format")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#appendix-config-files-format-3","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{staticClass:"lead"},[_c('p',[_v("Given below are the details of the various config files used by RepoSense.")])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_c('strong',[_v("RepoSense ignores the order of column headers in the CSV config files. However, the spelling of the column headers must match the specified headers exactly, or the column would be ignored by RepoSense.")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_c('strong',[_v("A value in a config file is optional to provide unless it is specified as "),_c('span',{staticClass:"badge bg-danger"},[_v("mandatory")])]),_v(".")])]),_v(" "),_c('h2',{attrs:{"id":"repo-config-csv-3"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#repo-config-csv-3","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(" file contains repo-level config data.")]),_v(" Each row represents a repository's configuration ("),_c('a',{attrs:{"href":"/RepoSense/ug/repo-config.csv"}},[_v("example")]),_v(").")]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Column Name")]),_v(" "),_c('th',[_v("Explanation")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_v("Repository's Location "),_c('span',{staticClass:"badge bg-danger"},[_v("mandatory")])]),_v(" "),_c('td',[_v("The "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Remote Repo URL")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Disk Path")]),_v(" to the git repository e.g., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://github.com/foo/bar.git")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("C:\\Users\\user\\Desktop\\GitHub\\foo\\bar")])])]),_v(" "),_c('tr',[_c('td',[_v("Branch")]),_v(" "),_c('td',[_v("The branch to analyze in the target repository e.g., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("master")]),_v(". Default: the default branch of the repo")])]),_v(" "),_c('tr',[_c('td',[_v("File formats"),_c('sup',[_v("*+")])]),_v(" "),_c('td',[_v("The file extensions to analyze. Binary file formats, such as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("png")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("jpg")]),_v(", will be automatically labelled as the file type "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("binary")]),_v(" in the generated report. Default: all file formats")])]),_v(" "),_c('tr',[_c('td',[_v("Find Previous Authors")]),_v(" "),_c('td',[_v("Enter "),_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("yes")])]),_v(" to utilize Git blame's ignore revisions functionality, RepoSense will attempt to blame the line changes caused by commits in the ignore commit list to the previous authors who altered those lines (if available).")])]),_v(" "),_c('tr',[_c('td',[_v("Ignore Glob List"),_c('sup',[_v("*+")])]),_v(" "),_c('td',[_v("The list of file path globs to ignore during analysis for each author e.g., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("test/**;temp/**")]),_v(". Refer to the "),_c('a',{attrs:{"href":"https://docs.oracle.com/javase/tutorial/essential/io/fileOps.html#glob"}},[_c('em',[_v("glob format")])]),_v(" for the path glob syntax.")])]),_v(" "),_c('tr',[_c('td',[_v("Ignore standalone config")]),_v(" "),_c('td',[_v("To ignore the standalone config file (if any) in target repository, enter "),_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("yes")])]),_v(". If the cell is empty, the standalone config file in the repo (if any) will take precedence over configurations provided in the csv files.")])]),_v(" "),_c('tr',[_c('td',[_v("Ignore Commits List"),_c('sup',[_v("*+")])]),_v(" "),_c('td',[_v("The list of commits to ignore during analysis. For accurate results, the commits should be provided with their full hash. Additionally, a range of commits can be specified using the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("..")]),_v(" notation e.g. "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("abc123..def456")]),_v(" (both inclusive).")])]),_v(" "),_c('tr',[_c('td',[_v("Ignore Authors List"),_c('sup',[_v("*+")])]),_v(" "),_c('td',[_v("The list of authors to ignore during analysis. Authors should be specified by their "),_c('a',{attrs:{"href":"#a-note-about-git-author-name"}},[_v("Git Author Name")]),_v(".")])]),_v(" "),_c('tr',[_c('td',[_v("Shallow Cloning")]),_v(" "),_c('td',[_v("Enter "),_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("yes")])]),_v(" to clone the repository using Git's shallow cloning functionality. This option can significantly reduce the time taken to clone large repositories. However, the option should ideally be disabled for smaller repositories where the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(".git")]),_v(" file is smaller than 500 MB, as it would create overhead.")])]),_v(" "),_c('tr',[_c('td',[_v("File Size Limit"),_c('sup',[_v("+")])]),_v(" "),_c('td',[_v("Enter a file size limit for the repository in bytes as a single number without units (for a size limit of 1MB for example, enter 1000000). This file size limit will override the default file size limit (500KB). Files exceeding the file size limit will be marked as ignored and only the file name and line count will be reflected in the report.")])]),_v(" "),_c('tr',[_c('td',[_v("Ignore File Size Limit")]),_v(" "),_c('td',[_v("Enter "),_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("yes")])]),_v(" to ignore both the default file size limit and the file size limit possibly set by the user in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(".")])]),_v(" "),_c('tr',[_c('td',[_v("Skip Ignored File Analysis")]),_v(" "),_c('td',[_v("Enter "),_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("yes")])]),_v(" to ignore analysis of files exceeding the file size limit entirely. If file analysis is skipped, all information about the file will be omitted from the generated report. This option can significantly improve report generation time.")])])])])]),_c('box',{attrs:{"type":"info","seamless":""}},[_v("\nThe Shallow Cloning option is incompatible with the \"--last-modified-date\" CLI flag.\n")]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_v("\nIf Ignore File Size Limit is yes, the File Size Limit and Skip Ignored File Analysis columns are ignored.\n")]),_v(" "),_c('p',[_c('sup',[_v("* "),_c('strong',[_v("Multi-value column")]),_v(": multiple values can be entered in this column using a semicolon "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(";")]),_v(" as the separator.")]),_c('br'),_v(" "),_c('sup',[_v("+ "),_c('strong',[_v("Overrideable column")]),_v(": prepend with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("override:")]),_v(" to use entered value(s) instead of value(s) from standalone config.")])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("When using "),_c('a',{attrs:{"href":"#config-json-standalone-config-file"}},[_v("standalone config")]),_v(" (if it is not ignored), it is possible to override specific values from the standalone config by prepending the entered value with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("override:")]),_v(".")])]),_v(" "),_c('h2',{attrs:{"id":"author-config-csv-3"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#author-config-csv-3","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Optionally, you can use an "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(" (which should be in the same directory as the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(" file) to provide more details about the authors to analyze ("),_c('a',{attrs:{"href":"/RepoSense/ug/author-config.csv"}},[_v("example")]),_v("). It should contain the following columns:")]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Column Name")]),_v(" "),_c('th',[_v("Explanation")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_v("Repository's Location"),_c('sup',[_v("*")])]),_v(" "),_c('td',[_v("Same as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(". Default: all the repos in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(".")])]),_v(" "),_c('tr',[_c('td',[_v("Branch")]),_v(" "),_c('td',[_v("The branch to analyze for this author, e.g., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("master")]),_v(". Default: the author will be bound to all the repos in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(" that has the same repo's location, regardless of branch.")])]),_v(" "),_c('tr',[_c('td',[_v("Author's Git Host ID"),_c('sup',[_v("#")]),_v(" "),_c('span',{staticClass:"badge bg-danger"},[_v("mandatory")])]),_v(" "),_c('td',[_v("Username of the target author's profile on GitHub, GitLab or Bitbucket, e.g."),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("JohnDoe")]),_v(".")])]),_v(" "),_c('tr',[_c('td',[_v("Author's Emails"),_c('sup',[_v("*")])]),_v(" "),_c('td',[_v("Associated emails of the author. For GitHub users, this can be found in your "),_c('a',{attrs:{"href":"https://github.com/settings/emails"}},[_v("GitHub settings")]),_v(".")])]),_v(" "),_c('tr',[_c('td',[_v("Author's Display Name")]),_v(" "),_c('td',[_v("The name to display for the author. Default: author's username.")])]),_v(" "),_c('tr',[_c('td',[_v("Author's Git Author Name"),_c('sup',[_v("*")])]),_v(" "),_c('td',[_v("The meaning of "),_c('em',[_v("Git Author Name")]),_v(" is explained in "),_c('a',{attrs:{"href":"#a-note-about-git-author-name"}},[_c('em',[_v("A note about git author name")])]),_v(".")])]),_v(" "),_c('tr',[_c('td',[_v("Ignore Glob List"),_c('sup',[_v("*")])]),_v(" "),_c('td',[_v("Files to ignore for this author, in addition to files ignored by the patterns specified in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(". The path glob syntax is the same as that of Ignore Glob List in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(".")])])])])]),_c('p',[_c('sup',[_v("* "),_c('strong',[_v("Multi-value column")]),_v(": multiple values can be entered in this column using a semicolon "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(";")]),_v(" as the separator.")]),_v(" "),_c('br'),_v(" "),_c('sup',[_v("# For backward compatibility, "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Author's GitHub ID")]),_v(" is still accepted as the header in place of "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Author's Git Host ID")]),_v(".")])]),_v(" "),_c('p',[_v("If "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(" is not given and the repo has not provided author details in a standalone config file, all the authors of the repositories within the date range specified (if any) will be analyzed.")]),_v(" "),_c('p',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(" has some advanced syntax that can help to reduce duplication of the author's information. The syntax guide is given below:")]),_v(" "),_c('div',{staticClass:"indented-level0"},[_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('span',[_c('span',{staticClass:"glyphicon glyphicon-log-in",attrs:{"aria-hidden":"true"}})]),_v(" Appendix: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(" advanced syntax")])]},proxy:true}])},[_v(" "),_c('div',[_c('h1',{staticClass:"display-4",attrs:{"id":"appendix-author-config-csv-advanced-syntax-3"}},[_c('span',[_v("Appendix: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(" advanced syntax")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#appendix-author-config-csv-advanced-syntax-3","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{staticClass:"lead"},[_c('p',[_v("Given below are the advanced syntax available for "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(".")])]),_v(" "),_c('h2',{attrs:{"id":"multiple-repository-s-location-per-author-3"}},[_v("Multiple "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repository's Location")]),_v(" per author"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#multiple-repository-s-location-per-author-3","onclick":"event.stopPropagation()"}})]),_v(" "),_c('h4',{attrs:{"id":"specifying-multiple-repository-s-location-3"}},[_v("Specifying multiple "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repository's Location")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#specifying-multiple-repository-s-location-3","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("To specify multiple "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repository's Location")]),_v(" in a single row, we can use a semicolon "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(";")]),_v(" as a separator.")]),_v(" "),_c('p',[_v("Below is an example:")]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Repository's Location")]),_v(" "),_c('th',[_v("Branch")]),_v(" "),_c('th',[_v("Author's Git Host ID")]),_v(" "),_c('th',[_v("... Hidden columns")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://github.com/reposense/RepoSense.git;https://github.com/MarkBind/markbind.git")])]),_v(" "),_c('td',[_v("master")]),_v(" "),_c('td',[_v("sikai00")]),_v(" "),_c('td',[_v("--")])])])])]),_c('p',[_v("We have now furnished author details for both repositories in a single row, instead of having two individual rows per "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repository's Location")]),_v(".")]),_v(" "),_c('br'),_v(" "),_c('h4',{attrs:{"id":"specifying-repository-s-location-with-one-or-more-specific-branches-3"}},[_v("Specifying "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repository's Location")]),_v(" with one or more specific branches"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#specifying-repository-s-location-with-one-or-more-specific-branches-3","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("To list out one or more branches for a particular "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repository's Location")]),_v(", we can use a pipe "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("|")]),_v(" separator to demarcate the different branches.")]),_v(" "),_c('p',[_v("Below is an example:")]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Repository's Location")]),_v(" "),_c('th',[_v("Branch")]),_v(" "),_c('th',[_v("Author's Git Host ID")]),_v(" "),_c('th',[_v("... Hidden columns")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://github.com/reposense/RepoSense.git~master|release|cypress")])]),_v(" "),_c('td',[_v("master")]),_v(" "),_c('td',[_v("sikai00")]),_v(" "),_c('td',[_v("--")])])])])]),_c('p',[_v("We have now provided author details for three different branches in a single repo, using a single row.")]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("The branch specified through the delimiter syntax will take precedence over the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Branch")]),_v(" column.")])]),_v(" "),_c('h2',{attrs:{"id":"using-github-branch-url-as-repository-s-location-3"}},[_v("Using GitHub branch URL as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repository's Location")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#using-github-branch-url-as-repository-s-location-3","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("We can also use GitHub branch URL as copied from the address bar directly, to be able to quickly use the URL to specify the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repository's Location")]),_v(" and a specific "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Branch")]),_v(" at the same time.")]),_v(" "),_c('p',[_v("Below is an example:")]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Repository's Location")]),_v(" "),_c('th',[_v("Branch")]),_v(" "),_c('th',[_v("Author's Git Host ID")]),_v(" "),_c('th',[_v("... Hidden columns")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://github.com/reposense/RepoSense/tree/release")])]),_v(" "),_c('td'),_v(" "),_c('td',[_v("sikai00")]),_v(" "),_c('td',[_v("--")])])])])]),_c('p',[_v("There is no need to specify the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Branch")]),_v(" column now, as we have specified it through the GitHub branch URL.")]),_v(" "),_c('box',{attrs:{"type":"warning","seamless":""}},[_c('p',[_v("GitLab and BitBucket branch URL are not supported at the moment.")])]),_v(" "),_c('h2',{attrs:{"id":"combining-the-advanced-syntax-3"}},[_v("Combining the advanced syntax"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#combining-the-advanced-syntax-3","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("It is possible to combine the above-mentioned advanced syntax. By doing so, we can go from:")]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Repository's Location")]),_v(" "),_c('th',[_v("Branch")]),_v(" "),_c('th',[_v("Author's Git Host ID")]),_v(" "),_c('th',[_v("... Hidden columns")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://github.com/MarkBind/markbind/tree/vue3-migration")])]),_v(" "),_c('td'),_v(" "),_c('td',[_v("sikai00")]),_v(" "),_c('td',[_v("--")])]),_v(" "),_c('tr',[_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://github.com/reposense/RepoSense.git")])]),_v(" "),_c('td',[_v("master")]),_v(" "),_c('td',[_v("sikai00")]),_v(" "),_c('td',[_v("--")])]),_v(" "),_c('tr',[_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://github.com/reposense/RepoSense.git")])]),_v(" "),_c('td',[_v("cypress")]),_v(" "),_c('td',[_v("sikai00")]),_v(" "),_c('td',[_v("--")])])])])]),_c('p',[_v("to:")]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Repository's Location")]),_v(" "),_c('th',[_v("Branch")]),_v(" "),_c('th',[_v("Author's Git Host ID")]),_v(" "),_c('th',[_v("... Hidden columns")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://github.com/MarkBind/markbind/tree/vue3-migration;https://github.com/reposense/RepoSense.git~master|cypress")])]),_v(" "),_c('td'),_v(" "),_c('td',[_v("sikai00")]),_v(" "),_c('td',[_v("--")])])])])]),_c('br')],1)])],1),_v(" "),_c('p'),_v(" "),_c('h2',{attrs:{"id":"group-config-csv-3"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("group-config.csv")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#group-config-csv-3","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Optionally, you can provide a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("group-config.csv")]),_v("(which should be in the same directory as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(" file) to provide details on any custom groupings for files in specified repositories ("),_c('a',{attrs:{"href":"/RepoSense/ug/group-config.csv"}},[_v("example")]),_v("). It should contain the following columns:")]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Column Name")]),_v(" "),_c('th',[_v("Explanation")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_v("Repository's Location")]),_v(" "),_c('td',[_v("Same as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(". Default: all the repos in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")])])]),_v(" "),_c('tr',[_c('td',[_v("Group Name "),_c('span',{staticClass:"badge bg-danger"},[_v("mandatory")])]),_v(" "),_c('td',[_v("Name of the group, e.g.,"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("test")]),_v(".")])]),_v(" "),_c('tr',[_c('td',[_v("Globs * "),_c('span',{staticClass:"badge bg-danger"},[_v("mandatory")])]),_v(" "),_c('td',[_v("The list of file path globs to include for specified group, e.g.,"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("**/test/*;**.java")]),_v(".")])])])])]),_c('p',[_c('sup',[_v("* "),_c('strong',[_v("Multi-value column")]),_v(": multiple values can be entered in this column using a semicolon "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(";")]),_v(" as the separator.")])]),_v(" "),_c('p',[_v("Note that a file in a given repository should only be tagged to one group. "),_c('br'),_v("\ne.g.: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("example.java")]),_v(" in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("example-repo")]),_v(" can either be in the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("test")]),_v(" group or the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("code")]),_v(" group, but not in both "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("test")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("code")]),_v(" group. If multiple groups are specified for a given file, the latter group (i.e., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("code")]),_v(" group) is set for the file.")]),_v(" "),_c('h2',{attrs:{"id":"report-config-json-3"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("report-config.json")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#report-config-json-3","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("You can optionally use "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("report-config.json")]),_v(" to customize report generation by providing the following information. ("),_c('a',{attrs:{"href":"/RepoSense/ug/report-config.json"}},[_v("example")]),_v(")")]),_v(" "),_c('p',[_c('strong',[_v("Fields to provide")]),_v(":")]),_v(" "),_c('ul',[_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("title")]),_v(": Title of the generated report, which is also the title of the deployed dashboard. Default: \"RepoSense Report\"")])]),_v(" "),_c('div',{attrs:{"id":"section-standalone"}},[_c('h2',{attrs:{"id":"config-json-standalone-config-file-4"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("config.json")]),_v(" (standalone config file)"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#config-json-standalone-config-file-4","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Repo owners can provide the following additional information to RepoSense using a config file that we call the "),_c('strong',[_c('em',[_v("standalone config file")])]),_v(":")]),_v(" "),_c('ul',[_c('li',[_v("which files/authors/commits to analyze/omit")]),_v(" "),_c('li',[_v("which git and git host usernames belong to which authors")]),_v(" "),_c('li',[_v("the display of an author")])]),_v(" "),_c('p',[_v("To use this feature, add a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("_reposense/config.json")]),_v(" to the root of your repo using the format in the example below ("),_c('a',{attrs:{"href":"https://github.com/reposense/RepoSense/blob/master/_reposense/config.json"}},[_v("another example")]),_v(") and "),_c('strong',[_v("commit it")]),_v(" (reason: RepoSense can see committed code only):")]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"no-line-numbers hljs json"}},[_c('span',[_v("{\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"ignoreGlobList\"")]),_v(": ["),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"about-us/**\"")]),_v(", "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"**index.html\"")]),_v("],\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"formats\"")]),_v(": ["),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"html\"")]),_v(", "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"css\"")]),_v("],\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"ignoreCommitList\"")]),_v(": ["),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"90018e49f129ce7e0abdc8b18e91c9813588c601\"")]),_v(", "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"67890def\"")]),_v(", "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"abc123..def456\"")]),_v("],\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"ignoreAuthorList\"")]),_v(": ["),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"charlie\"")]),_v("],\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"authors\"")]),_v(":\n")]),_c('span',[_v(" [\n")]),_c('span',[_v(" {\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"gitId\"")]),_v(": "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"alice\"")]),_v(",\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"emails\"")]),_v(": ["),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"alice@example.com\"")]),_v(", "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"alicet@example.com\"")]),_v("],\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"displayName\"")]),_v(": "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"Alice T.\"")]),_v(",\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"authorNames\"")]),_v(": ["),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"AT\"")]),_v(", "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"A\"")]),_v("],\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"ignoreGlobList\"")]),_v(": ["),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"**.css\"")]),_v("]\n")]),_c('span',[_v(" },\n")]),_c('span',[_v(" {\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"gitId\"")]),_v(": "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"bob\"")]),_v("\n")]),_c('span',[_v(" }\n")]),_c('span',[_v(" ]\n")]),_c('span',[_v("}\n")])])]),_c('p',[_v("Note: all fields are optional unless specified otherwise.")]),_v(" "),_c('p',[_c('strong',[_v("Fields to provide "),_c('em',[_v("repository-level")]),_v(" info")]),_v(":")]),_v(" "),_c('ul',[_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ignoreGlobList")]),_v(": Folders/files to ignore, specified using the "),_c('a',{attrs:{"href":"https://docs.oracle.com/javase/tutorial/essential/io/fileOps.html#glob"}},[_c('em',[_v("glob format")])]),_v(".")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("formats")]),_v(": File formats to analyze. Binary file formats, such as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("png")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("jpg")]),_v(", will be automatically labelled as the file type "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("binary")]),_v(" in the generated report. Default: all file formats")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ignoreCommitList")]),_v(": The list of commits to ignore during analysis. For accurate results, the commits should be provided with their full hash. Additionally, a range of commits can be specified using the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("..")]),_v(" notation e.g. "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("abc123..def456")]),_v(" (both inclusive).")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ignoreAuthorList")]),_v(": The list of authors to ignore during analysis. Authors specified in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("authors")]),_v(" field or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(" will be also be omitted if they are in this list. Authors should be specified by their "),_c('a',{attrs:{"href":"#a-note-about-git-author-name"}},[_v("Git Author Name")]),_v(".")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("fileSizeLimit")]),_v(": A file size limit for the repository in bytes as a single number without units, that will override the default file size limit. If not specified, the default file size limit will continue to be used.")])]),_v(" "),_c('p',[_c('strong',[_v("Fields to provide "),_c('em',[_v("author-level")]),_v(" info")]),_v(":"),_c('br'),_v("\nNote: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("authors")]),_v(" field should contain "),_c('em',[_v("all")]),_v(" authors that should be captured in the analysis.")]),_v(" "),_c('ul',[_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("gitId")]),_v(": Username of the author. "),_c('span',{staticClass:"badge bg-danger"},[_v("mandatory")]),_v(" field.")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("emails")]),_v(": Associated git emails of the author. For GitHub, this can be found in your "),_c('a',{attrs:{"href":"https://github.com/settings/emails"}},[_v("GitHub settings")]),_v(".")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("displayName")]),_v(": Name to display on the report for this author.")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("authorNames")]),_v(": Git Author Name(s) used in the author's commits. By default, RepoSense assumes an author would use their remote Git Host username as the Git username too. The meaning of "),_c('em',[_v("Git Author Name")]),_v(" is explained in "),_c('a',{attrs:{"href":"#a-note-about-git-author-name"}},[_c('em',[_v("A note about git author name")])]),_v(".")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ignoreGlobList")]),_v(": "),_c('em',[_v("Additional")]),_v(" (i.e. on top of the repo-level "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ignoreGlobList")]),_v(") folders/files to ignore for a specific author. The path glob syntax is specified by the "),_c('a',{attrs:{"href":"https://docs.oracle.com/javase/tutorial/essential/io/fileOps.html#glob"}},[_c('em',[_v("glob format")])]),_v(". In the example above, the actual "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ignoreGlobList")]),_v(" for "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("alice")]),_v(" would be "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("[\"about-us/**\", \"**index.html\", \"**.css\"]")]),_v(".")])]),_v(" "),_c('p',[_v("To verify your standalone configuration is as intended, add the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("_reposense/config.json")]),_v(" to your local copy of repo and run RepoSense against it as follows:"),_c('br')]),_v(" "),_c('ul',[_c('li',[_v("Format: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar --repo LOCAL_REPO_LOCATION")]),_v(" "),_c('br')]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar --repo c:/myRepose/foo/bar")]),_c('br'),_v("\nAfter that, view the report to see if the configuration you specified in the config file is being reflected correctly in the report.")])]),_v(" "),_c('h2',{attrs:{"id":"a-note-about-git-author-name-4"}},[_v("A note about git author name"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#a-note-about-git-author-name-4","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Git Author Name")]),_v(" refers to the customizable author's display name set in the local "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(".gitconfig")]),_v(" file. For example, in the Git Log's display:")]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"no-line-numbers hljs"}},[_c('span',[_v("...\n")]),_c('span',[_v("commit cd7f610e0becbdf331d5231887d8010a689f87c7\n")]),_c('span',[_v("Author: ConfiguredAuthorName \n")]),_c('span',[_v("Date: Fri Feb 9 19:14:41 2018 +0800\n")]),_c('span',[_v("\n")]),_c('span',[_v(" Make some changes to show my new author's name\n")]),_c('span',[_v("\n")]),_c('span',[_v("commit e3f699fd4ef128eebce98d5b4e5b3bb06a512f49\n")]),_c('span',[_v("Author: ActualGitHostId \n")]),_c('span',[_v("Date: Fri Feb 9 19:13:13 2018 +0800\n")]),_c('span',[_v("\n")]),_c('span',[_v(" Initial commit\n")]),_c('span',[_v(" ...\n")])])]),_c('p',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ActualGitHostId")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ConfiguredAuthorName")]),_v(" are both "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Git Author Name")]),_v(" of the same author."),_c('br'),_v("\nTo find the author name that you are currently using for your current git repository, run the following command within your git repository:")]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"no-line-numbers hljs"}},[_c('span',[_v("git config user.name\n")])])]),_c('p',[_v("To set the author name to the value you want (e.g., to set it to your GitHub username) for your current git repository, you can use the following command ("),_c('a',{attrs:{"href":"https://www.git-tower.com/learn/git/faq/change-author-name-email"}},[_v("more info")]),_v("):")]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"no-line-numbers hljs"}},[_c('span',[_v("git config user.name \"YOUR_AUTHOR_NAME”\n")])])]),_c('p',[_v("To set the author name to use a default value you want for future git repositories, you can use the following command:")]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"no-line-numbers hljs"}},[_c('span',[_v("git config --global user.name \"YOUR_AUTHOR_NAME”\n")])])]),_c('p',[_v("RepoSense expects the Git Author Name to be the same as author's username on the Git hosting platform (GitHub, GitLab, BitBucket). If an author's "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Git Author Name")]),_v(" is different from their username on the Git hosting platform, the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Git Author Name")]),_v(" needs to be specified in the standalone config file. If the author has more than one "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Git Author Name")]),_v(", multiple values can be entered too.")]),_v(" "),_c('box',{attrs:{"type":"warning","seamless":""}},[_c('p',[_v("Note: Symbols such as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("\"")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("!")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("/")]),_v(" etc. in your author name will be omitted, which may reduce the accuracy of the analysis if 2 names in the repository are approximately similar.")])])],1),_v(" "),_c('div',{attrs:{"id":"section-blurbs"}},[_c('h2',{attrs:{"id":"blurbs-md-4"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("blurbs.md")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#blurbs-md-4","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("You can optionally use "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("blurbs.md")]),_v(" to add blurbs in Markdown syntax for repository branches. These blurbs will be seen when grouping by "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repo/Branch")]),_v(". ("),_c('a',{attrs:{"href":"https://github.com/reposense/RepoSense/blob/master/docs/ug/blurbs.md"}},[_v("example")]),_v(")")]),_v(" "),_c('p',[_c('strong',[_v("Format")]),_v(":")]),_v(" "),_c('ul',[_c('li',[_v("First line in section: Link to the repository branch.")]),_v(" "),_c('li',[_v("Second line onwards: Blurb content.")]),_v(" "),_c('li',[_v("Delimiter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("")]),_v(". Everything on the line after the delimiter will be ignored.")])])])],1)])],1),_v(" "),_c('p')]),_v(" "),_c('p',[_c('span',{staticClass:"badge bg-dark bigger-level0"},[_v("Step 4")]),_v(" "),_c('strong',[_v("View the generated report:")])]),_v(" "),_c('p',[_v("To access your regenerated RepoSense report, go to the settings of your fork in GitHub, under "),_c('strong',[_v("GitHub Pages")]),_v(" section, look for "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Your site is published at [LINK]")]),_v(". It should look something like "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://[YOUR_GITHUB_ID].github.io/publish-RepoSense")]),_v(".\n"),_c('a',{attrs:{"href":"/RepoSense/images/publishingguide-githubsetting.jpg","target":"_self"}},[_c('img',{staticClass:"img-fluid",attrs:{"src":"/RepoSense/images/publishingguide-githubsetting.jpg","alt":"GitHub Setting","title":"GitHub Setting"}})])]),_v(" "),_c('box',{attrs:{"type":"tip","seamless":""}},[_c('p',[_v("There is also a published GitHub Action ("),_c('a',{attrs:{"href":"https://github.com/marketplace/actions/reposense-action"}},[_v("reposense-action")]),_v(") that can be used to generate and publish RepoSense reports. It is especially convenient for users who wish to skip the forking and setting up of a separate repository. For more information, refer to the "),_c('a',{attrs:{"href":"https://github.com/marketplace/actions/reposense-action#usage"}},[_v("usage description")]),_v(".")])])],1),_v(" "),_c('div',{attrs:{"id":"section-updating-the-report"}},[_c('h2',{attrs:{"id":"updating-the-report"}},[_v("Updating the report"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#updating-the-report","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_v("Manual:")])]),_v(" "),_c('ul',[_c('li',[_v("You can trigger GitHub to re-generate and re-deploy the report by pushing an empty commit to your fork.")]),_v(" "),_c('li',[_v("Currently, the GitHub Actions UI does not support the manual execution of workflows.")])]),_v(" "),_c('p',[_c('strong',[_v("Automated:")]),_v(" GitHub actions can be set to run periodically.")]),_v(" "),_c('ol',[_c('li',[_v("Edit the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(".github/workflows/main.yml")]),_v(" and uncomment the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("schedule:")]),_v(" section.")]),_v(" "),_c('li',[_v("You may change the expression after "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("cron:")]),_v(" to a schedule of your choice. Read more about cron syntax "),_c('a',{attrs:{"href":"https://help.github.com/en/actions/reference/events-that-trigger-workflows#scheduled-events-schedule"}},[_v("here")]),_v(".")]),_v(" "),_c('li',[_v("Commit your changes.")])])])])])],1),_v(" "),_c('p'),_v(" "),_c('div',{staticClass:"indented-level0"},[_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('span',[_c('span',{staticClass:"glyphicon glyphicon-log-in",attrs:{"aria-hidden":"true"}})]),_v(" Appendix: "),_c('strong',[_v("Using RepoSense with Travis")])])]},proxy:true}])},[_v(" "),_c('div',[_c('h1',{staticClass:"display-4",attrs:{"id":"appendix-reposense-with-travis"}},[_c('span',[_v("Appendix: RepoSense with Travis")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#appendix-reposense-with-travis","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{attrs:{"id":"section-setting-up"}},[_c('div',{staticClass:"lead"},[_c('p',[_v("You can use the CI tool Travis to automate generating and publishing of RepoSense reports.")])]),_v(" "),_c('h2',{attrs:{"id":"setting-up-6"}},[_v("Setting up"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#setting-up-6","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{attrs:{"id":"section-fork-token"}},[_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("The instructions below assume you are using GitHub pages to host your report.")])]),_v(" "),_c('p',[_c('span',{staticClass:"badge bg-dark bigger-level0"},[_v("Step 1")]),_v(" "),_c('strong',[_v("Fork the "),_c('em',[_v("publish-RepoSense")]),_v(" repository")]),_v(" using this "),_c('a',{attrs:{"href":"https://github.com/RepoSense/publish-RepoSense/fork"}},[_v("link")]),_v(". Optionally, you can rename the fork to match your RepoSense report e.g., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("project-code-dashboard")]),_v(".")])],1),_v(" "),_c('p',[_c('span',{staticClass:"badge bg-dark bigger-level0"},[_v("Step 2")]),_v(" "),_c('strong',[_v("Generate a "),_c('em',[_v("personal access token")]),_v(" or "),_c('em',[_v("deploy key")]),_v(" on GitHub")]),_v(" as explained in the panel below.")]),_v(" "),_c('div',{staticClass:"indented-level0"},[_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('span',[_c('span',{staticClass:"glyphicon glyphicon-log-in",attrs:{"aria-hidden":"true"}})]),_v(" Granting write access on GitHub")])]},proxy:true}])},[_v(" "),_c('div',[_c('h2',{attrs:{"id":"granting-write-access-to-a-repository-2"}},[_v("Granting write-access to a repository"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#granting-write-access-to-a-repository-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("We recommend using a "),_c('a',{attrs:{"href":"https://github.blog/2013-05-16-personal-api-tokens/"}},[_v("personal access token")]),_v(" if aiming for the ease of setup and "),_c('a',{attrs:{"href":"https://developer.github.com/v3/guides/managing-deploy-keys/#deploy-keys"}},[_v("deploy key")]),_v(" if aiming for enhanced security.")]),_v(" "),_c('h3',{attrs:{"id":"if-you-wish-to-use-personal-access-token-2"}},[_v("If you wish to use "),_c('em',[_v("personal access token")]),_v(":"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#if-you-wish-to-use-personal-access-token-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('ol',[_c('li',[_c('strong',[_v("Create a "),_c('em',[_v("personal access token")])]),_v(" by following this "),_c('a',{attrs:{"href":"https://help.github.com/articles/creating-a-personal-access-token-for-the-command-line/"}},[_v("guide")]),_v(" and give only "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("public_repo")]),_v(" permission.")]),_v(" "),_c('li',[_c('strong',[_v("Copy the token")]),_v(" for later use.")])]),_v(" "),_c('h3',{attrs:{"id":"if-you-wish-to-use-deploy-key-2"}},[_v("If you wish to use "),_c('em',[_v("deploy key")]),_v(":"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#if-you-wish-to-use-deploy-key-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('box',{attrs:{"type":"info"},scopedSlots:_u([{key:"icon",fn:function(){return [_c('span',{staticClass:"fab fa-windows",attrs:{"aria-hidden":"true"}})]},proxy:true}])},[_v(" "),_c('p',[_v("[Windows users] "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ssh-keygen")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("base64")]),_v(" are accessible using "),_c('a',{attrs:{"href":"https://gitforwindows.org/"}},[_v("Git Bash")]),_v(".")])]),_v(" "),_c('ol',[_c('li',[_c('strong',[_v("Create a public-private key pair")]),_v(" (without a passphrase) using the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ssh-keygen")]),_v(". "),_c('br'),_v("\ni.e., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ssh-keygen -t ecdsa -b 521 -f id_reposense -q -N \"\"")])]),_v(" "),_c('li',[_c('strong',[_v("Create a deploy key")]),_v(" as follows:\n"),_c('ol',[_c('li',[_v("Go to the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("settings")]),_v(" page of your publish-RepoSense fork")]),_v(" "),_c('li',[_v("Click on the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Deploy keys")]),_v(" item in the navigation menu in that page")]),_v(" "),_c('li',[_v("Click on the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Add deploy key")]),_v(" button and create a new deploy key with the contents of "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("id_reposense.pub")]),_v(".")])])]),_v(" "),_c('li',[_c('strong',[_v("Copy the private key")]),_v(" in base64 encoded format for later use. "),_c('br'),_v("\ni.e., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("cat id_reposense | base64 -w 0")])])])],1)])],1),_v(" "),_c('p'),_v(" "),_c('p',[_c('span',{staticClass:"badge bg-dark bigger-level0"},[_v("Step 3")]),_v(" "),_c('strong',[_v("Login to "),_c('a',{attrs:{"href":"https://travis-ci.org/"}},[_v("Travis-CI")]),_v(".")]),_v(" You may have to sign up first.")]),_v(" "),_c('p',[_c('span',{staticClass:"badge bg-dark bigger-level0"},[_v("Step 4")]),_v(" "),_c('strong',[_v("Sync your Travis account with GitHub:")])]),_v(" "),_c('ol',[_c('li',[_v("Go to "),_c('a',{attrs:{"href":"https://travis-ci.org/account/repositories"}},[_v("your account")]),_v(".")]),_v(" "),_c('li',[_v("Click on "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Sync account")]),_v(" to fetch all your repositories into Travis-CI.")])]),_v(" "),_c('p',[_c('span',{staticClass:"badge bg-dark bigger-level0"},[_v("Step 5")]),_v(" "),_c('strong',[_v("Activate the repository:")])]),_v(" "),_c('ol',[_c('li',[_v("Go to your "),_c('a',{attrs:{"href":"https://travis-ci.org/search/publish-RepoSense/"}},[_v("publish-RepoSense fork in Travis-CI")])]),_v(" "),_c('li',[_v("Under "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Current")]),_v(" tab, click on "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Activate repository")]),_v(".")])]),_v(" "),_c('p',[_c('span',{staticClass:"badge bg-dark bigger-level0"},[_v("Step 6")]),_v(" "),_c('strong',[_v("Set the token/key:")])]),_v(" "),_c('ol',[_c('li',[_v("In the same page, click on "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("More options")]),_v(" on the right.")]),_v(" "),_c('li',[_v("Then, click on the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Settings")]),_v(" option:"),_c('br'),_v(" "),_c('a',{attrs:{"href":"/RepoSense/images/publishingguide-travissetting.jpg","target":"_self"}},[_c('img',{staticClass:"img-fluid",attrs:{"src":"/RepoSense/images/publishingguide-travissetting.jpg","alt":"Travis-CI Dashboard","title":"Travis-CI Dashboard"}})])]),_v(" "),_c('li',[_v("Under "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Environment Variables")]),_v(", name a variable as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("GITHUB_TOKEN")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("GITHUB_DEPLOY_KEY")]),_v(" depending on your earlier choice and paste the token/key into its value field; then click "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Add")]),_v(".")]),_v(" "),_c('li',[_v("Ensure that the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Display value in build log")]),_v(" is "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("switched off")]),_v(" for security reasons:"),_c('br'),_v(" "),_c('a',{attrs:{"href":"/RepoSense/images/publishingguide-githubtoken.jpg","target":"_self"}},[_c('img',{staticClass:"img-fluid",attrs:{"src":"/RepoSense/images/publishingguide-githubtoken.jpg","alt":"Travis-CI Environment Variable","title":"Travis-CI Environment Variable"}})])])]),_v(" "),_c('p',[_c('span',{staticClass:"badge bg-dark bigger-level0"},[_v("Step 7")]),_v(" "),_c('strong',[_v("Update the report configuration:")])]),_v(" "),_c('span',{attrs:{"id":"section-edit-configs"}},[_c('p',[_v("In your fork, edit "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("run.sh")]),_v(" (and if applicable, "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("group-config.csv")]),_v(") to customize the command line parameters or repositories to be analyzed.")]),_v(" "),_c('div',{staticClass:"indented-level0"},[_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('span',[_c('span',{staticClass:"glyphicon glyphicon-log-in",attrs:{"aria-hidden":"true"}})]),_v(" Appendix: "),_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("run.sh")]),_v(" format")])])]},proxy:true}])},[_v(" "),_c('div',[_c('h1',{staticClass:"display-4",attrs:{"id":"appendix-run-sh-format-4"}},[_c('span',[_v("Appendix: run.sh format")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#appendix-run-sh-format-4","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{staticClass:"lead"},[_c('p',[_c('a',{attrs:{"href":"https://github.com/reposense/publish-RepoSense/blob/master/run.sh"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("run.sh")])]),_v(" is a script used for automating RepoSense report generation.")])]),_v(" "),_c('h3',{attrs:{"id":"customizing-the-reposense-command-4"}},[_v("Customizing the RepoSense command"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#customizing-the-reposense-command-4","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("You can update the RepoSense command (i.e., the last line) in the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("run.sh")]),_v(" to match your needs.")]),_v(" "),_c('div',{staticClass:"indented-level0"},[_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('span',[_c('span',{staticClass:"glyphicon glyphicon-log-in",attrs:{"aria-hidden":"true"}})]),_v(" Appendix: "),_c('strong',[_v("CLI syntax reference")])])]},proxy:true}])},[_v(" "),_c('div',[_c('h1',{staticClass:"display-4",attrs:{"id":"appendix-cli-syntax-reference-5"}},[_c('span',[_v("Appendix: CLI syntax reference")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#appendix-cli-syntax-reference-5","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{staticClass:"lead"},[_c('p',[_v("The command "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar")]),_v(" takes several flags.")])]),_v(" "),_c('box',[_c('p',[_c('strong',[_v("Examples")]),_v(":")]),_v(" "),_c('p',[_v("An example of a command using most parameters:"),_c('br'),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar --repos https://github.com/reposense/RepoSense.git --output ./report_folder --since 31/1/2017 --until 31/12/2018 --formats java adoc xml --view --ignore-standalone-config --last-modified-date --timezone UTC+08 --find-previous-authors --analyze-authorship --originality-threshold 0.66")])]),_v(" "),_c('p',[_v("Same command as above but using most parameters in alias format:"),_c('br'),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar -r https://github.com/reposense/RepoSense.git -o ./report_folder -s 31/1/2017 -u 31/12/2018 -f java adoc xml -v -i -l -t UTC+08 -F -A -ot 0.66")])])]),_v(" "),_c('p',[_v("The section below provides explanations for each of the flags.")]),_v(" "),_c('h3',{attrs:{"id":"analyze-authorship-a-5"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--analyze-authorship")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-A")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#analyze-authorship-a-5","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--analyze-authorship")])]),_v(": Performs further analysis to distinguish between partial and full credit attribution for\nlines of code assigned to the author.")]),_v(" "),_c('ul',[_c('li',[_v("Default: this feature is turned "),_c('em',[_c('strong',[_v("off")])]),_v(" by default and the author will receive partial credits for all lines of\ncode, as the code lines are at least partial credit but may not qualify for full credit.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-A")]),_v(" (upper case)")]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--analyze-authorship")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-A")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("A darker background colour represents full credit, while a lighter background colour represents partial credit.")]),_v(" "),_c('p',[_v("If the code is attributed to a different author by the user via "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("@@author")]),_v(" tag, then the new author will be given\npartial credit.")])]),_v(" "),_c('h3',{attrs:{"id":"assets-a-5"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--assets")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-a")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#assets-a-5","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{attrs:{"id":"section-assets"}},[_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--assets ASSETS_DIRECTORY")])]),_v(": Specifies where to place assets for report generation.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ASSETS_DIRECTORY")]),_v(" The directory containing the assets files. A "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("favicon.ico")]),_v(" file can be placed here to customize the favicon of the dashboard, while a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("title.md")]),_v(" file can be placed to customize the "),_c('a',{attrs:{"href":"https://reposense.org/ug/customizingReports.html#add-a-title"}},[_v("title")]),_v(" of the report using "),_c('a',{attrs:{"href":"https://www.markdownguide.org/basic-syntax/"}},[_v("Markdown syntax")]),_v(".")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-a")])]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--assets ./assets")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-a ./assets")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("If "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--assets")]),_v(" is not specified, RepoSense looks for assets in the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./assets")]),_v(" directory.")])])])],1),_v(" "),_c('h3',{attrs:{"id":"config-c-5"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--config")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-c")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#config-c-5","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{attrs:{"id":"section-config"}},[_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--config CONFIG_DIRECTORY")])]),_v(": Specifies that config files located in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("CONFIG_DIRECTORY")]),_v(" should be used to customize the report.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("CONFIG_DIRECTORY")]),_v(" The directory containing the config files. Should contain a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(" file. Optionally, can contain an "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(" file or/and a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("group-config.csv")]),_v(" file or/and a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("report-config.json")]),_v(" file or/and a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("blurbs.md")]),_v(" file.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-c")])]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar --config ./config")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("Cannot be used with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repos")]),_v(". The "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repos")]),_v(" flag will take precedence over this flag.")]),_v(" "),_c('li',[_v("If both "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repos")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--config")]),_v(" are not specified, RepoSense looks for config files in the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./config")]),_v(" directory.")]),_v(" "),_c('li',[_v("Config files must follow "),_c('a',{attrs:{"href":"/RepoSense/ug/configFiles.html"}},[_v("this")]),_v(" format.")])])])],1),_v(" "),_c('h3',{attrs:{"id":"formats-f-5"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--formats")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-f")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#formats-f-5","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--formats LIST_OF_FORMATS")])]),_v(": Specifies which file extensions to be included in the analysis.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("LIST_OF_FORMATS")]),_v(" A space-separated list of file extensions that should be included in the analysis."),_c('br'),_v("\nDefault: all file formats")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-f")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--formats css fxml gradle")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-f css fxml gradle")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Binary file formats, such as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("jpg")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("png")]),_v(","),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("exe")]),_v(","),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("zip")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("rar")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("docx")]),_v(", and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("pptx")]),_v(", all will be labelled as the file type "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("binary")]),_v(" in the generated report.")])]),_v(" "),_c('h3',{attrs:{"id":"find-previous-authors-f-5"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--find-previous-authors")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-F")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#find-previous-authors-f-5","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--find-previous-authors")])]),_v(": Utilizes Git blame's ignore revisions functionality, RepoSense will attempt to blame the line changes caused by commits in the ignore commit list to the previous authors who altered those lines (if available).")]),_v(" "),_c('ul',[_c('li',[_v("Default: RepoSense will assume that no authors are responsible for the code changes in the lines altered by commits in the ignore commit list.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-F")]),_v(" (uppercase F)")]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--find-previous-authors")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-F")])])]),_v(" "),_c('h3',{attrs:{"id":"help-h-5"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--help")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-h")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#help-h-5","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--help")])]),_v(": Shows the help message.")]),_v(" "),_c('ul',[_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-h")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Cannot be used with any other flags. This flag takes precedence over all other flags.")])]),_v(" "),_c('h3',{attrs:{"id":"ignore-standalone-config-i-5"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--ignore-standalone-config")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-i")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#ignore-standalone-config-i-5","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--ignore-standalone-config")])]),_v(": Specifies that the standalone config file in the repo should be ignored.")]),_v(" "),_c('ul',[_c('li',[_v("Default: the standalone config file is not ignored")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-i")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--ignore-standalone-config")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-i")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("This flag overrides the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Ignore standalone config")]),_v(" field in the CSV config file.")])]),_v(" "),_c('h3',{attrs:{"id":"ignore-filesize-limit-i-5"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--ignore-filesize-limit")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-I")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#ignore-filesize-limit-i-5","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--ignore-filesize-limit")])]),_v(": Specifies that the file size limit (both default and user-defined) should be ignored during the analysis.")]),_v(" "),_c('ul',[_c('li',[_v("Default: the file size limit is not ignored")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-I")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--ignore-filesize-limit")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-I")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("All files are subject to a default file size limit or a custom size limit set by the user. Most files should not be\naffected by the default size limit. This flag can be useful for including files in your report that are affected by\nthe size limit. Note that this flag may result in large report sizes and/or slower report generation.")])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("This flag overrides the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Ignore file size limit")]),_v(" field in the CSV config file.")])]),_v(" "),_c('h3',{attrs:{"id":"last-modified-date-l-5"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--last-modified-date")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-l")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#last-modified-date-l-5","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--last-modified-date")])]),_v(": Specifies that the last modified date of each line of code should be added to "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("authorship.json")]),_v(".")]),_v(" "),_c('ul',[_c('li',[_v("Default: the last modified date of each line of code will not be added to "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("authorship.json")])]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-l")]),_v(" (lowercase L)")]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--last-modified-date")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-l")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("Cannot be used with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--shallow-cloning")]),_v(". This may result in an incorrect last modified date.")]),_v(" "),_c('li',[_v("The last modified dates will be in the same timezone specified with the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--timezone")]),_v(" flag.")])])]),_v(" "),_c('h3',{attrs:{"id":"originality-threshold-ot-5"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--originality-threshold")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-ot")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#originality-threshold-ot-5","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--originality-threshold [VALUE]")])]),_v(": Specifies the cut-off point for partial and full credit\nin "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--analyze-authorship")]),_v(". Author will be given full credit if their contribution exceeds this threshold, else partial\ncredit is given.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("VALUE")]),_v(" Optional. Acceptable range: [0.0, 1.0]."),_c('br'),_v("\nDefault: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("0.51")])]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-ot")])]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--originality-threshold 0.66")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-ot 0.66")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("Requires "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--analyze-authorship")]),_v(" flag.")]),_v(" "),_c('li',[_v("An author's contribution, or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("originality score")]),_v(", is calculated using Levenshtein Distance (Edit Distance) algorithm.\nWe compare the difference between current code line and its previous versions.")])])]),_v(" "),_c('h3',{attrs:{"id":"output-o-5"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--output")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-o")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#output-o-5","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--output OUTPUT_DIRECTORY")])]),_v(": Indicates where to save the report generated.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("OUTPUT_DIRECTORY")]),_v(" The location for the generated "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("reposense-report")]),_v(" folder."),_c('br'),_v("\nDefault: current directory")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-o")])]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--output ./foo")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-o ./foo")]),_v(" (the report will be in the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./foo/reposense-report")]),_v(" folder)")])]),_v(" "),_c('h3',{attrs:{"id":"period-p-5"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--period")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-p")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#period-p-5","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--period PERIOD")])]),_v(": Specifies the period of analysis window.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("PERIOD")]),_v(" The period of analysis window, in the format "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("nd")]),_v(" (for n days) or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("nw")]),_v(" (for n weeks). It is used to calculate end date if only start date is specified, or calculate end date if only start date is specified.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-p")])]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--period 30d")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--period 4w")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("If both start date and end date are not specified, the date of generating the report will be taken as the end date.")]),_v(" "),_c('li',[_v("May analyze the incorrect date range if used with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since d1")]),_v(". The program will throw a warning.")]),_v(" "),_c('li',[_v("Cannot be used with both "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--until")]),_v(". The program will throw an exception.")])])]),_v(" "),_c('h3',{attrs:{"id":"repo-repos-r-5"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repo")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repos")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-r")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#repo-repos-r-5","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repo REPO_LOCATION")])]),_v(": Specifies which repositories to analyze.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("REPO_LOCATION")]),_v(" A list of URLs or the disk location of the git repositories to analyze, separated by spaces.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-r")])]),_v(" "),_c('li',[_v("Examples:\n"),_c('ul',[_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repos https://github.com/reposense/RepoSense.git")])]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repo https://github.com/reposense/RepoSense.git c:/myRepose/foo/bar")]),_v(": analyzes the two specified repos (one remote, one local) and generates one report containing details of both.")])])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Cannot be used with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--config")]),_v(". This flag takes precedence over "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--config")]),_v(".")])]),_v(" "),_c('h3',{attrs:{"id":"shallow-cloning-s-5"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--shallow-cloning")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-S")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#shallow-cloning-s-5","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--shallow-cloning")])]),_v(": Clones repositories using Git's shallow cloning functionality, which can significantly reduce the time taken to clone large repositories. However, the flag should not be used for smaller repositories where the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(".git")]),_v(" file is smaller than 500 MB, as it would create overhead.")]),_v(" "),_c('ul',[_c('li',[_v("Default: RepoSense does not clone repositories using Git's shallow cloning functionality.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-S")]),_v(" (uppercase S)")]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--shallow-cloning")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-S")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Cannot be used with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--last-modified-date")]),_v(". This may result in an incorrect last modified date.")])]),_v(" "),_c('h3',{attrs:{"id":"since-s-5"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-s")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#since-s-5","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since START_DATE")])]),_v(": Specifies the start date for the period to be analyzed.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("START_DATE")]),_v(" The first day of the period to be analyzed, in the format "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("DD/MM/YYYY")]),_v("."),_c('br'),_v("\nDefault: one month before the current date")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-s")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since 21/10/2017")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-s 21/10/2017")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("If the start date is not specified, only commits made one month before the end date (if specified) or the date of generating the report, will be captured and analyzed.")]),_v(" "),_c('li',[_v("If "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("d1")]),_v(" is specified as the start date ("),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since d1")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-s d1")]),_v("), then the program will search for the earliest commit date of all repositories and use that as the start date.")]),_v(" "),_c('li',[_v("If "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("d1")]),_v(" is specified together with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--period")]),_v(", then the program will warn that the date range being analyzed may be incorrect.")])])]),_v(" "),_c('h3',{attrs:{"id":"timezone-t-5"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--timezone")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-t")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#timezone-t-5","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--timezone ZONE_ID")])]),_v(": Indicates the timezone to be used for the analysis.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ZONE_ID")]),_v(" The timezone in the format "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ZONE_ID[±hh[mm]]")]),_v("."),_c('br'),_v("\nDefault: system's default timezone")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-t")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--timezone UTC+08")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-t UTC-1030")])])]),_v(" "),_c('h3',{attrs:{"id":"until-u-5"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--until")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-u")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#until-u-5","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--until END_DATE")])]),_v(": Specifies the end date of the analysis period.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("END_DATE")]),_v(" The last date of the period to be analyzed, in the format "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("DD/MM/YYYY")]),_v("."),_c('br'),_v("\nDefault: current date")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-u")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--until 21/10/2017")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-u 21/10/2017")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Note: If the end date is not specified, the date of generating the report will be taken as the end date.")])]),_v(" "),_c('h3',{attrs:{"id":"version-v-5"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--version")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-V")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#version-v-5","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--version")])]),_v(": Shows the version of RepoSense.")]),_v(" "),_c('ul',[_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-V")]),_v(" (upper case)")])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Cannot be used with any other flags. This flag takes precedence over all other flags other than "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--help")]),_v(".")])]),_v(" "),_c('h3',{attrs:{"id":"view-v-5"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--view")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-v")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#view-v-5","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--view [REPORT_FOLDER]")])]),_v(": Specifies that the report should be opened in the default browser.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("REPORT_FOLDER")]),_v(" Optional. If specified, no analysis will be performed and the report specified by the argument will be opened."),_c('br'),_v("\nDefault: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./reposense-report")])]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-v")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--view")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-v")])])])],1)])],1),_v(" "),_c('p'),_v(" "),_c('h3',{attrs:{"id":"specifying-which-version-of-reposense-to-use-4"}},[_v("Specifying which version of RepoSense to use"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#specifying-which-version-of-reposense-to-use-4","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Depending on which version you wish to use for report generation, add one of the following flags to the line "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./get-reposense.py")]),_v(" in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("run.sh")]),_v(" (e.g., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./get-reposense.py --release")]),_v("):")]),_v(" "),_c('ul',[_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--release")]),_v(": Use the latest release (Stable)")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--master")]),_v(": Use the latest version of the master branch")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--tag TAG")]),_v(" (e.g. "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--tag v1.6.1")]),_v("): Use the version identified by the Git tag given")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--commit COMMIT")]),_v(" (e.g. "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--commit abc123")]),_v("): Use the version identified by the Git commit SHA given")])])])])],1),_v(" "),_c('p'),_v(" "),_c('div',{staticClass:"indented-level0"},[_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('span',[_c('span',{staticClass:"glyphicon glyphicon-log-in",attrs:{"aria-hidden":"true"}})]),_v(" Appendix: "),_c('strong',[_v("Config files format")])])]},proxy:true}])},[_v(" "),_c('div',[_c('h1',{staticClass:"display-4",attrs:{"id":"appendix-config-files-format-4"}},[_c('span',[_v("Appendix: Config files format")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#appendix-config-files-format-4","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{staticClass:"lead"},[_c('p',[_v("Given below are the details of the various config files used by RepoSense.")])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_c('strong',[_v("RepoSense ignores the order of column headers in the CSV config files. However, the spelling of the column headers must match the specified headers exactly, or the column would be ignored by RepoSense.")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_c('strong',[_v("A value in a config file is optional to provide unless it is specified as "),_c('span',{staticClass:"badge bg-danger"},[_v("mandatory")])]),_v(".")])]),_v(" "),_c('h2',{attrs:{"id":"repo-config-csv-4"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#repo-config-csv-4","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(" file contains repo-level config data.")]),_v(" Each row represents a repository's configuration ("),_c('a',{attrs:{"href":"/RepoSense/ug/repo-config.csv"}},[_v("example")]),_v(").")]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Column Name")]),_v(" "),_c('th',[_v("Explanation")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_v("Repository's Location "),_c('span',{staticClass:"badge bg-danger"},[_v("mandatory")])]),_v(" "),_c('td',[_v("The "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Remote Repo URL")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Disk Path")]),_v(" to the git repository e.g., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://github.com/foo/bar.git")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("C:\\Users\\user\\Desktop\\GitHub\\foo\\bar")])])]),_v(" "),_c('tr',[_c('td',[_v("Branch")]),_v(" "),_c('td',[_v("The branch to analyze in the target repository e.g., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("master")]),_v(". Default: the default branch of the repo")])]),_v(" "),_c('tr',[_c('td',[_v("File formats"),_c('sup',[_v("*+")])]),_v(" "),_c('td',[_v("The file extensions to analyze. Binary file formats, such as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("png")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("jpg")]),_v(", will be automatically labelled as the file type "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("binary")]),_v(" in the generated report. Default: all file formats")])]),_v(" "),_c('tr',[_c('td',[_v("Find Previous Authors")]),_v(" "),_c('td',[_v("Enter "),_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("yes")])]),_v(" to utilize Git blame's ignore revisions functionality, RepoSense will attempt to blame the line changes caused by commits in the ignore commit list to the previous authors who altered those lines (if available).")])]),_v(" "),_c('tr',[_c('td',[_v("Ignore Glob List"),_c('sup',[_v("*+")])]),_v(" "),_c('td',[_v("The list of file path globs to ignore during analysis for each author e.g., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("test/**;temp/**")]),_v(". Refer to the "),_c('a',{attrs:{"href":"https://docs.oracle.com/javase/tutorial/essential/io/fileOps.html#glob"}},[_c('em',[_v("glob format")])]),_v(" for the path glob syntax.")])]),_v(" "),_c('tr',[_c('td',[_v("Ignore standalone config")]),_v(" "),_c('td',[_v("To ignore the standalone config file (if any) in target repository, enter "),_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("yes")])]),_v(". If the cell is empty, the standalone config file in the repo (if any) will take precedence over configurations provided in the csv files.")])]),_v(" "),_c('tr',[_c('td',[_v("Ignore Commits List"),_c('sup',[_v("*+")])]),_v(" "),_c('td',[_v("The list of commits to ignore during analysis. For accurate results, the commits should be provided with their full hash. Additionally, a range of commits can be specified using the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("..")]),_v(" notation e.g. "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("abc123..def456")]),_v(" (both inclusive).")])]),_v(" "),_c('tr',[_c('td',[_v("Ignore Authors List"),_c('sup',[_v("*+")])]),_v(" "),_c('td',[_v("The list of authors to ignore during analysis. Authors should be specified by their "),_c('a',{attrs:{"href":"#a-note-about-git-author-name"}},[_v("Git Author Name")]),_v(".")])]),_v(" "),_c('tr',[_c('td',[_v("Shallow Cloning")]),_v(" "),_c('td',[_v("Enter "),_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("yes")])]),_v(" to clone the repository using Git's shallow cloning functionality. This option can significantly reduce the time taken to clone large repositories. However, the option should ideally be disabled for smaller repositories where the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(".git")]),_v(" file is smaller than 500 MB, as it would create overhead.")])]),_v(" "),_c('tr',[_c('td',[_v("File Size Limit"),_c('sup',[_v("+")])]),_v(" "),_c('td',[_v("Enter a file size limit for the repository in bytes as a single number without units (for a size limit of 1MB for example, enter 1000000). This file size limit will override the default file size limit (500KB). Files exceeding the file size limit will be marked as ignored and only the file name and line count will be reflected in the report.")])]),_v(" "),_c('tr',[_c('td',[_v("Ignore File Size Limit")]),_v(" "),_c('td',[_v("Enter "),_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("yes")])]),_v(" to ignore both the default file size limit and the file size limit possibly set by the user in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(".")])]),_v(" "),_c('tr',[_c('td',[_v("Skip Ignored File Analysis")]),_v(" "),_c('td',[_v("Enter "),_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("yes")])]),_v(" to ignore analysis of files exceeding the file size limit entirely. If file analysis is skipped, all information about the file will be omitted from the generated report. This option can significantly improve report generation time.")])])])])]),_c('box',{attrs:{"type":"info","seamless":""}},[_v("\nThe Shallow Cloning option is incompatible with the \"--last-modified-date\" CLI flag.\n")]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_v("\nIf Ignore File Size Limit is yes, the File Size Limit and Skip Ignored File Analysis columns are ignored.\n")]),_v(" "),_c('p',[_c('sup',[_v("* "),_c('strong',[_v("Multi-value column")]),_v(": multiple values can be entered in this column using a semicolon "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(";")]),_v(" as the separator.")]),_c('br'),_v(" "),_c('sup',[_v("+ "),_c('strong',[_v("Overrideable column")]),_v(": prepend with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("override:")]),_v(" to use entered value(s) instead of value(s) from standalone config.")])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("When using "),_c('a',{attrs:{"href":"#config-json-standalone-config-file"}},[_v("standalone config")]),_v(" (if it is not ignored), it is possible to override specific values from the standalone config by prepending the entered value with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("override:")]),_v(".")])]),_v(" "),_c('h2',{attrs:{"id":"author-config-csv-4"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#author-config-csv-4","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Optionally, you can use an "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(" (which should be in the same directory as the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(" file) to provide more details about the authors to analyze ("),_c('a',{attrs:{"href":"/RepoSense/ug/author-config.csv"}},[_v("example")]),_v("). It should contain the following columns:")]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Column Name")]),_v(" "),_c('th',[_v("Explanation")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_v("Repository's Location"),_c('sup',[_v("*")])]),_v(" "),_c('td',[_v("Same as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(". Default: all the repos in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(".")])]),_v(" "),_c('tr',[_c('td',[_v("Branch")]),_v(" "),_c('td',[_v("The branch to analyze for this author, e.g., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("master")]),_v(". Default: the author will be bound to all the repos in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(" that has the same repo's location, regardless of branch.")])]),_v(" "),_c('tr',[_c('td',[_v("Author's Git Host ID"),_c('sup',[_v("#")]),_v(" "),_c('span',{staticClass:"badge bg-danger"},[_v("mandatory")])]),_v(" "),_c('td',[_v("Username of the target author's profile on GitHub, GitLab or Bitbucket, e.g."),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("JohnDoe")]),_v(".")])]),_v(" "),_c('tr',[_c('td',[_v("Author's Emails"),_c('sup',[_v("*")])]),_v(" "),_c('td',[_v("Associated emails of the author. For GitHub users, this can be found in your "),_c('a',{attrs:{"href":"https://github.com/settings/emails"}},[_v("GitHub settings")]),_v(".")])]),_v(" "),_c('tr',[_c('td',[_v("Author's Display Name")]),_v(" "),_c('td',[_v("The name to display for the author. Default: author's username.")])]),_v(" "),_c('tr',[_c('td',[_v("Author's Git Author Name"),_c('sup',[_v("*")])]),_v(" "),_c('td',[_v("The meaning of "),_c('em',[_v("Git Author Name")]),_v(" is explained in "),_c('a',{attrs:{"href":"#a-note-about-git-author-name"}},[_c('em',[_v("A note about git author name")])]),_v(".")])]),_v(" "),_c('tr',[_c('td',[_v("Ignore Glob List"),_c('sup',[_v("*")])]),_v(" "),_c('td',[_v("Files to ignore for this author, in addition to files ignored by the patterns specified in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(". The path glob syntax is the same as that of Ignore Glob List in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(".")])])])])]),_c('p',[_c('sup',[_v("* "),_c('strong',[_v("Multi-value column")]),_v(": multiple values can be entered in this column using a semicolon "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(";")]),_v(" as the separator.")]),_v(" "),_c('br'),_v(" "),_c('sup',[_v("# For backward compatibility, "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Author's GitHub ID")]),_v(" is still accepted as the header in place of "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Author's Git Host ID")]),_v(".")])]),_v(" "),_c('p',[_v("If "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(" is not given and the repo has not provided author details in a standalone config file, all the authors of the repositories within the date range specified (if any) will be analyzed.")]),_v(" "),_c('p',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(" has some advanced syntax that can help to reduce duplication of the author's information. The syntax guide is given below:")]),_v(" "),_c('div',{staticClass:"indented-level0"},[_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('span',[_c('span',{staticClass:"glyphicon glyphicon-log-in",attrs:{"aria-hidden":"true"}})]),_v(" Appendix: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(" advanced syntax")])]},proxy:true}])},[_v(" "),_c('div',[_c('h1',{staticClass:"display-4",attrs:{"id":"appendix-author-config-csv-advanced-syntax-4"}},[_c('span',[_v("Appendix: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(" advanced syntax")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#appendix-author-config-csv-advanced-syntax-4","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{staticClass:"lead"},[_c('p',[_v("Given below are the advanced syntax available for "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(".")])]),_v(" "),_c('h2',{attrs:{"id":"multiple-repository-s-location-per-author-4"}},[_v("Multiple "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repository's Location")]),_v(" per author"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#multiple-repository-s-location-per-author-4","onclick":"event.stopPropagation()"}})]),_v(" "),_c('h4',{attrs:{"id":"specifying-multiple-repository-s-location-4"}},[_v("Specifying multiple "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repository's Location")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#specifying-multiple-repository-s-location-4","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("To specify multiple "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repository's Location")]),_v(" in a single row, we can use a semicolon "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(";")]),_v(" as a separator.")]),_v(" "),_c('p',[_v("Below is an example:")]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Repository's Location")]),_v(" "),_c('th',[_v("Branch")]),_v(" "),_c('th',[_v("Author's Git Host ID")]),_v(" "),_c('th',[_v("... Hidden columns")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://github.com/reposense/RepoSense.git;https://github.com/MarkBind/markbind.git")])]),_v(" "),_c('td',[_v("master")]),_v(" "),_c('td',[_v("sikai00")]),_v(" "),_c('td',[_v("--")])])])])]),_c('p',[_v("We have now furnished author details for both repositories in a single row, instead of having two individual rows per "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repository's Location")]),_v(".")]),_v(" "),_c('br'),_v(" "),_c('h4',{attrs:{"id":"specifying-repository-s-location-with-one-or-more-specific-branches-4"}},[_v("Specifying "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repository's Location")]),_v(" with one or more specific branches"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#specifying-repository-s-location-with-one-or-more-specific-branches-4","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("To list out one or more branches for a particular "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repository's Location")]),_v(", we can use a pipe "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("|")]),_v(" separator to demarcate the different branches.")]),_v(" "),_c('p',[_v("Below is an example:")]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Repository's Location")]),_v(" "),_c('th',[_v("Branch")]),_v(" "),_c('th',[_v("Author's Git Host ID")]),_v(" "),_c('th',[_v("... Hidden columns")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://github.com/reposense/RepoSense.git~master|release|cypress")])]),_v(" "),_c('td',[_v("master")]),_v(" "),_c('td',[_v("sikai00")]),_v(" "),_c('td',[_v("--")])])])])]),_c('p',[_v("We have now provided author details for three different branches in a single repo, using a single row.")]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("The branch specified through the delimiter syntax will take precedence over the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Branch")]),_v(" column.")])]),_v(" "),_c('h2',{attrs:{"id":"using-github-branch-url-as-repository-s-location-4"}},[_v("Using GitHub branch URL as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repository's Location")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#using-github-branch-url-as-repository-s-location-4","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("We can also use GitHub branch URL as copied from the address bar directly, to be able to quickly use the URL to specify the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repository's Location")]),_v(" and a specific "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Branch")]),_v(" at the same time.")]),_v(" "),_c('p',[_v("Below is an example:")]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Repository's Location")]),_v(" "),_c('th',[_v("Branch")]),_v(" "),_c('th',[_v("Author's Git Host ID")]),_v(" "),_c('th',[_v("... Hidden columns")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://github.com/reposense/RepoSense/tree/release")])]),_v(" "),_c('td'),_v(" "),_c('td',[_v("sikai00")]),_v(" "),_c('td',[_v("--")])])])])]),_c('p',[_v("There is no need to specify the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Branch")]),_v(" column now, as we have specified it through the GitHub branch URL.")]),_v(" "),_c('box',{attrs:{"type":"warning","seamless":""}},[_c('p',[_v("GitLab and BitBucket branch URL are not supported at the moment.")])]),_v(" "),_c('h2',{attrs:{"id":"combining-the-advanced-syntax-4"}},[_v("Combining the advanced syntax"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#combining-the-advanced-syntax-4","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("It is possible to combine the above-mentioned advanced syntax. By doing so, we can go from:")]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Repository's Location")]),_v(" "),_c('th',[_v("Branch")]),_v(" "),_c('th',[_v("Author's Git Host ID")]),_v(" "),_c('th',[_v("... Hidden columns")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://github.com/MarkBind/markbind/tree/vue3-migration")])]),_v(" "),_c('td'),_v(" "),_c('td',[_v("sikai00")]),_v(" "),_c('td',[_v("--")])]),_v(" "),_c('tr',[_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://github.com/reposense/RepoSense.git")])]),_v(" "),_c('td',[_v("master")]),_v(" "),_c('td',[_v("sikai00")]),_v(" "),_c('td',[_v("--")])]),_v(" "),_c('tr',[_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://github.com/reposense/RepoSense.git")])]),_v(" "),_c('td',[_v("cypress")]),_v(" "),_c('td',[_v("sikai00")]),_v(" "),_c('td',[_v("--")])])])])]),_c('p',[_v("to:")]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Repository's Location")]),_v(" "),_c('th',[_v("Branch")]),_v(" "),_c('th',[_v("Author's Git Host ID")]),_v(" "),_c('th',[_v("... Hidden columns")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://github.com/MarkBind/markbind/tree/vue3-migration;https://github.com/reposense/RepoSense.git~master|cypress")])]),_v(" "),_c('td'),_v(" "),_c('td',[_v("sikai00")]),_v(" "),_c('td',[_v("--")])])])])]),_c('br')],1)])],1),_v(" "),_c('p'),_v(" "),_c('h2',{attrs:{"id":"group-config-csv-4"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("group-config.csv")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#group-config-csv-4","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Optionally, you can provide a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("group-config.csv")]),_v("(which should be in the same directory as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(" file) to provide details on any custom groupings for files in specified repositories ("),_c('a',{attrs:{"href":"/RepoSense/ug/group-config.csv"}},[_v("example")]),_v("). It should contain the following columns:")]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Column Name")]),_v(" "),_c('th',[_v("Explanation")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_v("Repository's Location")]),_v(" "),_c('td',[_v("Same as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(". Default: all the repos in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")])])]),_v(" "),_c('tr',[_c('td',[_v("Group Name "),_c('span',{staticClass:"badge bg-danger"},[_v("mandatory")])]),_v(" "),_c('td',[_v("Name of the group, e.g.,"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("test")]),_v(".")])]),_v(" "),_c('tr',[_c('td',[_v("Globs * "),_c('span',{staticClass:"badge bg-danger"},[_v("mandatory")])]),_v(" "),_c('td',[_v("The list of file path globs to include for specified group, e.g.,"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("**/test/*;**.java")]),_v(".")])])])])]),_c('p',[_c('sup',[_v("* "),_c('strong',[_v("Multi-value column")]),_v(": multiple values can be entered in this column using a semicolon "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(";")]),_v(" as the separator.")])]),_v(" "),_c('p',[_v("Note that a file in a given repository should only be tagged to one group. "),_c('br'),_v("\ne.g.: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("example.java")]),_v(" in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("example-repo")]),_v(" can either be in the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("test")]),_v(" group or the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("code")]),_v(" group, but not in both "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("test")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("code")]),_v(" group. If multiple groups are specified for a given file, the latter group (i.e., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("code")]),_v(" group) is set for the file.")]),_v(" "),_c('h2',{attrs:{"id":"report-config-json-4"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("report-config.json")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#report-config-json-4","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("You can optionally use "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("report-config.json")]),_v(" to customize report generation by providing the following information. ("),_c('a',{attrs:{"href":"/RepoSense/ug/report-config.json"}},[_v("example")]),_v(")")]),_v(" "),_c('p',[_c('strong',[_v("Fields to provide")]),_v(":")]),_v(" "),_c('ul',[_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("title")]),_v(": Title of the generated report, which is also the title of the deployed dashboard. Default: \"RepoSense Report\"")])]),_v(" "),_c('div',{attrs:{"id":"section-standalone"}},[_c('h2',{attrs:{"id":"config-json-standalone-config-file-5"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("config.json")]),_v(" (standalone config file)"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#config-json-standalone-config-file-5","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Repo owners can provide the following additional information to RepoSense using a config file that we call the "),_c('strong',[_c('em',[_v("standalone config file")])]),_v(":")]),_v(" "),_c('ul',[_c('li',[_v("which files/authors/commits to analyze/omit")]),_v(" "),_c('li',[_v("which git and git host usernames belong to which authors")]),_v(" "),_c('li',[_v("the display of an author")])]),_v(" "),_c('p',[_v("To use this feature, add a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("_reposense/config.json")]),_v(" to the root of your repo using the format in the example below ("),_c('a',{attrs:{"href":"https://github.com/reposense/RepoSense/blob/master/_reposense/config.json"}},[_v("another example")]),_v(") and "),_c('strong',[_v("commit it")]),_v(" (reason: RepoSense can see committed code only):")]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"no-line-numbers hljs json"}},[_c('span',[_v("{\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"ignoreGlobList\"")]),_v(": ["),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"about-us/**\"")]),_v(", "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"**index.html\"")]),_v("],\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"formats\"")]),_v(": ["),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"html\"")]),_v(", "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"css\"")]),_v("],\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"ignoreCommitList\"")]),_v(": ["),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"90018e49f129ce7e0abdc8b18e91c9813588c601\"")]),_v(", "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"67890def\"")]),_v(", "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"abc123..def456\"")]),_v("],\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"ignoreAuthorList\"")]),_v(": ["),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"charlie\"")]),_v("],\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"authors\"")]),_v(":\n")]),_c('span',[_v(" [\n")]),_c('span',[_v(" {\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"gitId\"")]),_v(": "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"alice\"")]),_v(",\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"emails\"")]),_v(": ["),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"alice@example.com\"")]),_v(", "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"alicet@example.com\"")]),_v("],\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"displayName\"")]),_v(": "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"Alice T.\"")]),_v(",\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"authorNames\"")]),_v(": ["),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"AT\"")]),_v(", "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"A\"")]),_v("],\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"ignoreGlobList\"")]),_v(": ["),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"**.css\"")]),_v("]\n")]),_c('span',[_v(" },\n")]),_c('span',[_v(" {\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"gitId\"")]),_v(": "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"bob\"")]),_v("\n")]),_c('span',[_v(" }\n")]),_c('span',[_v(" ]\n")]),_c('span',[_v("}\n")])])]),_c('p',[_v("Note: all fields are optional unless specified otherwise.")]),_v(" "),_c('p',[_c('strong',[_v("Fields to provide "),_c('em',[_v("repository-level")]),_v(" info")]),_v(":")]),_v(" "),_c('ul',[_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ignoreGlobList")]),_v(": Folders/files to ignore, specified using the "),_c('a',{attrs:{"href":"https://docs.oracle.com/javase/tutorial/essential/io/fileOps.html#glob"}},[_c('em',[_v("glob format")])]),_v(".")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("formats")]),_v(": File formats to analyze. Binary file formats, such as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("png")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("jpg")]),_v(", will be automatically labelled as the file type "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("binary")]),_v(" in the generated report. Default: all file formats")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ignoreCommitList")]),_v(": The list of commits to ignore during analysis. For accurate results, the commits should be provided with their full hash. Additionally, a range of commits can be specified using the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("..")]),_v(" notation e.g. "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("abc123..def456")]),_v(" (both inclusive).")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ignoreAuthorList")]),_v(": The list of authors to ignore during analysis. Authors specified in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("authors")]),_v(" field or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(" will be also be omitted if they are in this list. Authors should be specified by their "),_c('a',{attrs:{"href":"#a-note-about-git-author-name"}},[_v("Git Author Name")]),_v(".")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("fileSizeLimit")]),_v(": A file size limit for the repository in bytes as a single number without units, that will override the default file size limit. If not specified, the default file size limit will continue to be used.")])]),_v(" "),_c('p',[_c('strong',[_v("Fields to provide "),_c('em',[_v("author-level")]),_v(" info")]),_v(":"),_c('br'),_v("\nNote: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("authors")]),_v(" field should contain "),_c('em',[_v("all")]),_v(" authors that should be captured in the analysis.")]),_v(" "),_c('ul',[_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("gitId")]),_v(": Username of the author. "),_c('span',{staticClass:"badge bg-danger"},[_v("mandatory")]),_v(" field.")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("emails")]),_v(": Associated git emails of the author. For GitHub, this can be found in your "),_c('a',{attrs:{"href":"https://github.com/settings/emails"}},[_v("GitHub settings")]),_v(".")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("displayName")]),_v(": Name to display on the report for this author.")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("authorNames")]),_v(": Git Author Name(s) used in the author's commits. By default, RepoSense assumes an author would use their remote Git Host username as the Git username too. The meaning of "),_c('em',[_v("Git Author Name")]),_v(" is explained in "),_c('a',{attrs:{"href":"#a-note-about-git-author-name"}},[_c('em',[_v("A note about git author name")])]),_v(".")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ignoreGlobList")]),_v(": "),_c('em',[_v("Additional")]),_v(" (i.e. on top of the repo-level "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ignoreGlobList")]),_v(") folders/files to ignore for a specific author. The path glob syntax is specified by the "),_c('a',{attrs:{"href":"https://docs.oracle.com/javase/tutorial/essential/io/fileOps.html#glob"}},[_c('em',[_v("glob format")])]),_v(". In the example above, the actual "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ignoreGlobList")]),_v(" for "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("alice")]),_v(" would be "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("[\"about-us/**\", \"**index.html\", \"**.css\"]")]),_v(".")])]),_v(" "),_c('p',[_v("To verify your standalone configuration is as intended, add the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("_reposense/config.json")]),_v(" to your local copy of repo and run RepoSense against it as follows:"),_c('br')]),_v(" "),_c('ul',[_c('li',[_v("Format: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar --repo LOCAL_REPO_LOCATION")]),_v(" "),_c('br')]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar --repo c:/myRepose/foo/bar")]),_c('br'),_v("\nAfter that, view the report to see if the configuration you specified in the config file is being reflected correctly in the report.")])]),_v(" "),_c('h2',{attrs:{"id":"a-note-about-git-author-name-5"}},[_v("A note about git author name"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#a-note-about-git-author-name-5","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Git Author Name")]),_v(" refers to the customizable author's display name set in the local "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(".gitconfig")]),_v(" file. For example, in the Git Log's display:")]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"no-line-numbers hljs"}},[_c('span',[_v("...\n")]),_c('span',[_v("commit cd7f610e0becbdf331d5231887d8010a689f87c7\n")]),_c('span',[_v("Author: ConfiguredAuthorName \n")]),_c('span',[_v("Date: Fri Feb 9 19:14:41 2018 +0800\n")]),_c('span',[_v("\n")]),_c('span',[_v(" Make some changes to show my new author's name\n")]),_c('span',[_v("\n")]),_c('span',[_v("commit e3f699fd4ef128eebce98d5b4e5b3bb06a512f49\n")]),_c('span',[_v("Author: ActualGitHostId \n")]),_c('span',[_v("Date: Fri Feb 9 19:13:13 2018 +0800\n")]),_c('span',[_v("\n")]),_c('span',[_v(" Initial commit\n")]),_c('span',[_v(" ...\n")])])]),_c('p',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ActualGitHostId")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ConfiguredAuthorName")]),_v(" are both "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Git Author Name")]),_v(" of the same author."),_c('br'),_v("\nTo find the author name that you are currently using for your current git repository, run the following command within your git repository:")]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"no-line-numbers hljs"}},[_c('span',[_v("git config user.name\n")])])]),_c('p',[_v("To set the author name to the value you want (e.g., to set it to your GitHub username) for your current git repository, you can use the following command ("),_c('a',{attrs:{"href":"https://www.git-tower.com/learn/git/faq/change-author-name-email"}},[_v("more info")]),_v("):")]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"no-line-numbers hljs"}},[_c('span',[_v("git config user.name \"YOUR_AUTHOR_NAME”\n")])])]),_c('p',[_v("To set the author name to use a default value you want for future git repositories, you can use the following command:")]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"no-line-numbers hljs"}},[_c('span',[_v("git config --global user.name \"YOUR_AUTHOR_NAME”\n")])])]),_c('p',[_v("RepoSense expects the Git Author Name to be the same as author's username on the Git hosting platform (GitHub, GitLab, BitBucket). If an author's "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Git Author Name")]),_v(" is different from their username on the Git hosting platform, the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Git Author Name")]),_v(" needs to be specified in the standalone config file. If the author has more than one "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Git Author Name")]),_v(", multiple values can be entered too.")]),_v(" "),_c('box',{attrs:{"type":"warning","seamless":""}},[_c('p',[_v("Note: Symbols such as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("\"")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("!")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("/")]),_v(" etc. in your author name will be omitted, which may reduce the accuracy of the analysis if 2 names in the repository are approximately similar.")])])],1),_v(" "),_c('div',{attrs:{"id":"section-blurbs"}},[_c('h2',{attrs:{"id":"blurbs-md-5"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("blurbs.md")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#blurbs-md-5","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("You can optionally use "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("blurbs.md")]),_v(" to add blurbs in Markdown syntax for repository branches. These blurbs will be seen when grouping by "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repo/Branch")]),_v(". ("),_c('a',{attrs:{"href":"https://github.com/reposense/RepoSense/blob/master/docs/ug/blurbs.md"}},[_v("example")]),_v(")")]),_v(" "),_c('p',[_c('strong',[_v("Format")]),_v(":")]),_v(" "),_c('ul',[_c('li',[_v("First line in section: Link to the repository branch.")]),_v(" "),_c('li',[_v("Second line onwards: Blurb content.")]),_v(" "),_c('li',[_v("Delimiter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("")]),_v(". Everything on the line after the delimiter will be ignored.")])])])],1)])],1),_v(" "),_c('p')]),_v(" "),_c('p',[_c('span',{staticClass:"badge bg-dark bigger-level0"},[_v("Step 8")]),_v(" "),_c('strong',[_v("View the generated report:")])]),_v(" "),_c('ol',[_c('li',[_v("Go to the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Settings")]),_v(" page of your fork in GitHub.")]),_v(" "),_c('li',[_v("Under the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("GitHub Pages")]),_v(" section, look for "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Your site is published at [LINK]")]),_v(". It should look something like "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://[YOUR_GITHUB_ID].github.io/publish-RepoSense")]),_v(".\n"),_c('a',{attrs:{"href":"/RepoSense/images/publishingguide-githubsetting.jpg","target":"_self"}},[_c('img',{staticClass:"img-fluid",attrs:{"src":"/RepoSense/images/publishingguide-githubsetting.jpg","alt":"GitHub Setting","title":"GitHub Setting"}})])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("It takes a few minutes for report generation. Meanwhile, you can monitor the progress live at "),_c('a',{attrs:{"href":"https://travis-ci.org/dashboard/builds"}},[_v("Travis-CI's Builds")]),_v(".")])])],1),_v(" "),_c('h2',{attrs:{"id":"updating-the-report-2"}},[_v("Updating the report"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#updating-the-report-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_v("Manual:")]),_v(" Travis UI has a way for you to trigger a build, using which you can cause the report to be updated.")]),_v(" "),_c('ol',[_c('li',[_v("Go to "),_c('a',{attrs:{"href":"https://travis-ci.org/search/publish-RepoSense/"}},[_v("your fork in Travis-CI")]),_v(", click on "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("More options")]),_v(" on the right then "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Trigger build")]),_v(".")]),_v(" "),_c('li',[_v("In the pop up, click "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Trigger custom build")]),_v(".")])]),_v(" "),_c('p',[_c('strong',[_v("Automated:")]),_v(" "),_c('a',{attrs:{"href":"https://travis-ci.org/"}},[_v("Travis-CI")]),_v(" offers "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Cron Jobs")]),_v(" in intervals of daily, weekly or monthly.")]),_v(" "),_c('ol',[_c('li',[_v("Login to "),_c('a',{attrs:{"href":"https://travis-ci.org/"}},[_v("Travis-CI")]),_v(".")]),_v(" "),_c('li',[_v("Go to "),_c('a',{attrs:{"href":"https://travis-ci.org/search/publish-RepoSense/"}},[_v("your fork in Travis-CI")]),_v(", click on "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("More options")]),_v(" on the right then access "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Settings")]),_v(".")]),_v(" "),_c('li',[_v("Under "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Cron Jobs")]),_v(", choose "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("master")]),_v(" for "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Branch")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Always run")]),_v(" for "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Options")]),_v(" and pick an "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Interval")]),_v(" of your choice; then click "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Add")]),_v(".\n"),_c('a',{attrs:{"href":"/RepoSense/images/publishingguide-cronsetting.jpg","target":"_self"}},[_c('img',{staticClass:"img-fluid",attrs:{"src":"/RepoSense/images/publishingguide-cronsetting.jpg","alt":"Travis-CI Cron","title":"Travis-CI Cron"}})])])])])])],1),_v(" "),_c('p'),_v(" "),_c('div',{staticClass:"indented-level0"},[_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('span',[_c('span',{staticClass:"glyphicon glyphicon-log-in",attrs:{"aria-hidden":"true"}})]),_v(" Appendix: "),_c('strong',[_v("Using RepoSense with Netlify")])])]},proxy:true}])},[_v(" "),_c('div',[_c('h1',{staticClass:"display-4",attrs:{"id":"appendix-reposense-with-netlify"}},[_c('span',[_v("Appendix: RepoSense with Netlify")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#appendix-reposense-with-netlify","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{attrs:{"id":"section-setting-up"}},[_c('box',{attrs:{"type":"warning","seamless":""}},[_c('p',[_v("Note that Netlify has a low limit for free tier users (only 300 "),_c('em',[_v("build minutes")]),_v(" per month as at June 2020 -- a single report generation can take 2-3 build minutes, longer if your report includes many/big repositories).")])]),_v(" "),_c('h2',{attrs:{"id":"setting-up-7"}},[_v("Setting up"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#setting-up-7","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('span',{staticClass:"badge bg-dark bigger-level0"},[_v("Step 1")]),_v(" "),_c('strong',[_v("Fork the "),_c('em',[_v("publish-RepoSense")]),_v(" repository")]),_v(" using this "),_c('a',{attrs:{"href":"https://github.com/RepoSense/publish-RepoSense/fork"}},[_v("link")]),_v(". Optionally, you can rename the fork to match your RepoSense report e.g., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("project-code-dashboard")]),_v(".")]),_v(" "),_c('p',[_c('span',{staticClass:"badge bg-dark bigger-level0"},[_v("Step 2")]),_v(" "),_c('strong',[_v("Set up Netlify for your fork")]),_v(" as described in this "),_c('a',{attrs:{"href":"https://www.netlify.com/blog/2016/09/29/a-step-by-step-guide-deploying-on-netlify/"}},[_v("guide")]),_v("."),_c('br'),_v(" "),_c('mark',[_v("You will need to use the following in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Step 5: Configure Your Settings")]),_v(" of that guide")]),_v(":")]),_v(" "),_c('ul',[_c('li',[_v("build command: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("pip install requests && ./run.sh")]),_c('br')]),_v(" "),_c('li',[_v("publish directory: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./reposense-report")])])]),_v(" "),_c('p',[_v("After Netlify finishes building the site, you should be able to see a dummy report at the URL of your Netlify site.")]),_v(" "),_c('p',[_c('span',{staticClass:"badge bg-dark bigger-level0"},[_v("Step 3")]),_v(" "),_c('strong',[_v("Generate the report you want")]),_v(" by updating the settings in your fork.")]),_v(" "),_c('ol',[_c('li',[_v("Go to the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("run.sh")]),_v(" file of your fork (on GitHub).")]),_v(" "),_c('li',[_v("Update the last line (i.e., the command for running RepoSense) to match the report you want to generate:"),_c('br'),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar --repos FULL_REPO_URL")]),_v(" (assuming you want to generate a default report for just one repo)"),_c('br'),_v("\ne.g., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar --repos https://github.com/reposense/RepoSense.git")]),_v(" ("),_c('mark',[_v("note the .git at the end of the repo URL")]),_v(")")]),_v(" "),_c('li',[_v("Commit the file. This will trigger Netlify to rebuild the report.")]),_v(" "),_c('li',[_v("Go to the URL of your Netlify site to see the updated RepoSense report (it might take about 2-5 minutes for Netlify to generate the report).")])])],1),_v(" "),_c('div',{attrs:{"id":"section-pr-previews"}},[_c('h2',{attrs:{"id":"pr-previews-2"}},[_v("PR previews"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#pr-previews-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("After setting up Netlify for your repo containing RepoSense settings, when a PR comes in to that repo to update any setting, you can scroll down the PR page and in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("All checks have passed")]),_v(", click on the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Details")]),_v(" beside "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("deploy/netlify — Deploy preview ready!")]),_v(" to see a preview of the report as per the changes in the PR.\n"),_c('a',{attrs:{"href":"/RepoSense/images/publishingguide-netlifypreview.png","target":"_self"}},[_c('img',{staticClass:"img-fluid",attrs:{"src":"/RepoSense/images/publishingguide-netlifypreview.png","alt":"Netlify Preview","title":"Netlify Preview"}})])])]),_v(" "),_c('h2',{attrs:{"id":"updating-the-report-3"}},[_v("Updating the report"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#updating-the-report-3","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_v("Manual:")]),_v(" Netlify UI has a way for you to trigger a build, using which you can cause the report to be updated.")]),_v(" "),_c('p',[_c('strong',[_v("Automated:")]),_v(" Netlify's can be set up to update the report whenever a target repo of your report is updated, provided you are able to update the target repos in a certain way.")]),_v(" "),_c('ol',[_c('li',[_c('p',[_v("Click on "),_c('strong',[_v("Settings")]),_v(" in the top, choose "),_c('strong',[_v("Build & deploy")]),_v(" from the left panel and scroll to "),_c('strong',[_v("Build hooks")]),_v(".\n"),_c('a',{attrs:{"href":"/RepoSense/images/using-netlify-build-hooks.png","target":"_self"}},[_c('img',{staticClass:"img-fluid",attrs:{"src":"/RepoSense/images/using-netlify-build-hooks.png","alt":"Build hooks"}})])])]),_v(" "),_c('li',[_c('p',[_v("Click "),_c('strong',[_v("Add build hook")]),_v(", give your webhook a name, and choose the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("master")]),_v(" branch to build. A Netlify URL will be generated.")])]),_v(" "),_c('li',[_c('p',[_v("Go to your target repository (the repository you want to analyze) and click on "),_c('strong',[_v("Settings")]),_v(".")])]),_v(" "),_c('li',[_c('p',[_v("Select "),_c('strong',[_v("Webhooks")]),_v(" on left panel and click on "),_c('strong',[_v("Add webhook")]),_v(".\n"),_c('a',{attrs:{"href":"/RepoSense/images/using-netlify-add-hook.png","target":"_self"}},[_c('img',{staticClass:"img-fluid",attrs:{"src":"/RepoSense/images/using-netlify-add-hook.png","alt":"Add webhook"}})])])]),_v(" "),_c('li',[_c('p',[_v("Copy the Netlify URL and paste it in the URL form field.\n"),_c('a',{attrs:{"href":"/RepoSense/images/using-netlify-url.png","target":"_self"}},[_c('img',{staticClass:"img-fluid",attrs:{"src":"/RepoSense/images/using-netlify-url.png","alt":"Webhook url"}})])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Note: Although the build url is not that secretive, it should be kept safe to prevent any misuse.")])])],1),_v(" "),_c('li',[_c('p',[_v("Select "),_c('strong',[_v("application.json")]),_v(" as content type.")])]),_v(" "),_c('li',[_c('p',[_v("Select "),_c('strong',[_v("Let me select individual events")]),_v(" and based on your requirements check the checkboxes.")])]),_v(" "),_c('li',[_c('p',[_v("Leave the "),_c('strong',[_v("Active")]),_v(" checkbox checked.")])]),_v(" "),_c('li',[_c('p',[_v("Click on "),_c('strong',[_v("Add webhook")]),_v(" to save the webhook and add it.")])])])])])],1),_v(" "),_c('p'),_v(" "),_c('h3',{attrs:{"id":"embeddable-widgets"}},[_v("Embeddable Widgets"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#embeddable-widgets","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Published reports can additionally be embedded in other websites through "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("iframes")]),_v(". Simply click the clipboard icon to generate and copy the iframe for your desired section of the report for either a single ramp chart or a group of ramp charts. Paste the iframe in any HTML supported document to render it.")]),_v(" "),_c('p',[_v("A sample iframe would look like:")]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"hljs html"}},[_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-tag"}},[_v("<"),_c('span',{pre:true,attrs:{"class":"hljs-name"}},[_v("iframe")]),_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("src")]),_v("="),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"XXX\"")]),_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("frameborder")]),_v("="),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"0\"")]),_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("width")]),_v("="),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"800px\"")]),_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("height")]),_v("="),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"XXXpx\"")]),_v(">")]),_c('span',{pre:true,attrs:{"class":"hljs-tag"}},[_v("")]),_v("\n")])])]),_c('p',[_v("Adjust the width and height to the desired dimensions as required.")])])])],1),_v(" "),_c('p'),_v(" "),_c('p',[_v("If you encounter problems at any step, you can refer to our FAQ, the troubleshooting guide, or post in our issue tracker.")]),_v(" "),_c('div',{staticClass:"indented-level0"},[_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('span',[_c('span',{staticClass:"glyphicon glyphicon-log-in",attrs:{"aria-hidden":"true"}})]),_v(" Appendix: "),_c('strong',[_v("FAQ")])])]},proxy:true}])},[_v(" "),_c('div',[_c('h1',{staticClass:"display-4",attrs:{"id":"appendix-faq"}},[_c('span',[_v("Appendix: FAQ")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#appendix-faq","onclick":"event.stopPropagation()"}})]),_v(" "),_c('h3',{attrs:{"id":"q-does-reposense-work-on-private-repositories"}},[_v("Q: Does RepoSense work on private repositories?"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#q-does-reposense-work-on-private-repositories","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_v("A:")]),_v(" "),_c('em',[_v("RepoSense")]),_v(" will first clone the git repository to be analyzed; thus, if you do not have access to the repository, we cannot run the analysis."),_c('br'),_v("\nTo enable "),_c('em',[_v("RepoSense")]),_v(" to work on private repositories, ensure that you have enabled access to your private repository in your git terminal first before running the analysis.")]),_v(" "),_c('h3',{attrs:{"id":"q-how-do-formats-work"}},[_v("Q: How do formats work?"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#q-how-do-formats-work","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_v("A:")]),_v(" "),_c('strong',[_v("Formats")]),_v(" are the "),_c('a',{attrs:{"href":"https://techterms.com/definition/fileextension"}},[_v("file extensions")]),_v(", which is the "),_c('strong',[_v("suffix")]),_v(" at the end of a filename that indicates what type of file it is."),_c('br'),_v("\nThe formats/file extensions to be analyzed by "),_c('em',[_v("RepoSense")]),_v(" can be specified through the "),_c('a',{attrs:{"href":"/RepoSense/ug/configFiles.html#config-json-standalone-config-file"}},[_v("standalone config file")]),_v(", "),_c('a',{attrs:{"href":"/RepoSense/ug/configFiles.html#repo-config-csv"}},[_v("repo-config file")]),_v(", and "),_c('a',{attrs:{"href":"/RepoSense/ug/cli.html#formats-f"}},[_v("command line")]),_v(".")]),_v(" "),_c('h3',{attrs:{"id":"q-how-does-ignore-glob-list-work"}},[_v("Q: How does ignore glob list work?"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#q-how-does-ignore-glob-list-work","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_v("A:")]),_v(" "),_c('a',{attrs:{"href":"https://en.wikipedia.org/wiki/Glob_(programming)"}},[_v("Glob")]),_v(" is the pattern to specify a set of filenames with "),_c('a',{attrs:{"href":"https://www.computerhope.com/jargon/w/wildcard.htm"}},[_v("wildcard characters")]),_v(". "),_c('strong',[_v("Ignore glob list")]),_v(" is the list of patterns to specify all the files in the repository which should be ignored from analysis."),_c('br'),_v("\nThe ignore glob list can be specified through the "),_c('a',{attrs:{"href":"/RepoSense/ug/configFiles.html#config-json-standalone-config-file"}},[_v("standalone config file")]),_v(", "),_c('a',{attrs:{"href":"/RepoSense/ug/configFiles.html#repo-config-csv"}},[_v("repo-config file")]),_v(", and "),_c('a',{attrs:{"href":"/RepoSense/ug/configFiles.html#author-config-csv"}},[_v("author-config file")]),_v(".")])])])],1),_v(" "),_c('p'),_v(" "),_c('div',{staticClass:"indented-level0"},[_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('span',[_c('span',{staticClass:"glyphicon glyphicon-log-in",attrs:{"aria-hidden":"true"}})]),_v(" Appendix: "),_c('strong',[_v("Troubleshooting guide")])])]},proxy:true}])},[_v(" "),_c('div',[_c('h1',{staticClass:"display-4",attrs:{"id":"appendix-troubleshooting"}},[_c('span',[_v("Appendix: Troubleshooting")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#appendix-troubleshooting","onclick":"event.stopPropagation()"}})]),_v(" "),_c('h3',{attrs:{"id":"contributions-missing-in-the-ramp-chart-but-appear-in-the-contribution-bar-and-code-panel"}},[_v("Contributions missing in the ramp chart (but appear in the contribution bar and code panel)"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#contributions-missing-in-the-ramp-chart-but-appear-in-the-contribution-bar-and-code-panel","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("This is probably a case of giving an incorrect author name alias (or Git ID) in your "),_c('a',{attrs:{"href":"/RepoSense/ug/configFiles.html#author-config-csv"}},[_v("author-config file")]),_v("."),_c('br'),_v("\nPlease refer to "),_c('a',{attrs:{"href":"/RepoSense/ug/configFiles.html#a-note-about-git-author-name"}},[_v("A Note About Git Author Name")]),_v(" above on how to find out the correct author name you are using and how to change it."),_c('br'),_v("\nAlso, ensure that you have added all author name aliases you may be using (if you are using multiple computers or have previously changed your author name)."),_c('br'),_v("\nAlternatively, you may choose to configure "),_c('em',[_v("RepoSense")]),_v(" to track the email associated with your local Git config or remote Git host email in a "),_c('a',{attrs:{"href":"/RepoSense/ug/configFiles.html#config-json-standalone-config-file"}},[_v("standalone config file")]),_v(" or "),_c('a',{attrs:{"href":"/RepoSense/ug/configFiles.html#author-config-csv"}},[_v("author-config file")]),_v(", which is more accurate compared to author name aliases. For GitHub, the associated email you are using can be found in your "),_c('a',{attrs:{"href":"https://github.com/settings/emails"}},[_v("GitHub settings")]),_v(".")]),_v(" "),_c('h3',{attrs:{"id":"contribution-bar-and-code-panel-is-empty-despite-a-non-empty-ramp-chart"}},[_v("Contribution bar and code panel is empty (despite a non-empty ramp chart)"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#contribution-bar-and-code-panel-is-empty-despite-a-non-empty-ramp-chart","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("The contribution bar and code panel records the lines you have authored to the "),_c('strong',[_v("latest")]),_v(" commit of the repository and branch you are analyzing. As such, it is possible that while you have lots of committed contributions, your final authorship contribution is low. This happens if you have only deleted lines or someone else has overwritten your code and taken authorship for it (currently, RepoSense does not have the functionality to track overwritten lines)."),_c('br'),_v("\nIt is also possible that another user has overridden the authorship of your lines using the "),_c('a',{attrs:{"href":"/RepoSense/ug/usingAuthorTags.html#appendix-using-author-tags"}},[_v("@@author tags")]),_v(".")]),_v(" "),_c('h3',{attrs:{"id":"reposense-is-not-using-the-standalone-config-file-in-my-local-repository"}},[_v("RepoSense is not using the standalone config file in my local repository"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#reposense-is-not-using-the-standalone-config-file-in-my-local-repository","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Ensure that you have committed the changes to your standalone config file first before running the analysis, as "),_c('em',[_v("RepoSense")]),_v(" is unable to detect uncommitted changes to your local repository.")]),_v(" "),_c('h3',{attrs:{"id":"reposense-fails-on-windows-but-works-on-linux-mac-os"}},[_v("RepoSense fails on Windows (but works on Linux/Mac OS)"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#reposense-fails-on-windows-but-works-on-linux-mac-os","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Possibly, you may have some file names with "),_c('a',{attrs:{"href":"https://docs.microsoft.com/en-us/windows/desktop/FileIO/naming-a-file#naming-conventions"}},[_v("special characters")]),_v(" in them, which is disallowed in Windows OS. As such, "),_c('em',[_v("RepoSense")]),_v(" is unable to clone your repository fully, thus failing the analysis.")]),_v(" "),_c('h3',{attrs:{"id":"some-file-types-are-not-shown-in-the-file-type-filter-even-if-i-have-included-them-in-the-file-formats-when-generating-the-report"}},[_v("Some file types are not shown in the file type filter even if I have included them in the file formats when generating the report"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#some-file-types-are-not-shown-in-the-file-type-filter-even-if-i-have-included-them-in-the-file-formats-when-generating-the-report","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("The files of these types may be "),_c('a',{attrs:{"href":"https://en.wikipedia.org/wiki/Binary_file"}},[_v("binary files")]),_v(". "),_c('em',[_v("RepoSense")]),_v(" will group binary files under one single file type "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("binary")]),_v(". Common binary files include images ("),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(".jpg")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(".png")]),_v("), applications ("),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(".exe")]),_v("), zip files ("),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(".zip")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(".rar")]),_v(") and certain document types ("),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(".docx")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(".pptx")]),_v(").")])])])],1),_v(" "),_c('p'),_v(" "),_c('br'),_v(" "),_c('br'),_v(" "),_c('h4',{attrs:{"id":"happy-reposensing"}},[_c('span',{staticClass:"text-green"},[_c('thumbnail',{attrs:{"circle":"","background":"#006600","font-color":"white","size":"50"}},[_c('span',{staticClass:"fas fa-heart",attrs:{"aria-hidden":"true"}})]),_v(" "),_c('span',[_v("Happy RepoSensing!")])],1),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#happy-reposensing","onclick":"event.stopPropagation()"}})])],1),_v(" "),_c('overlay-source',{staticClass:"fixed-header-padding",attrs:{"id":"page-nav","tag-name":"nav","to":"page-nav"}},[_c('div',{staticClass:"nav-component slim-scroll"})])],1),_v(" "),_m(3)])} }; var pageVueStaticRenderFns = [function anonymous( ) { @@ -14,6 +14,6 @@ with(this){return _c('h1',{staticClass:"display-3",attrs:{"id":"user-guide"}},[_ with(this){return _c('div',{staticClass:"lead"},[_c('p',[_v("Welcome to the RepoSense user guide. This user guide takes you through a three-step approach to adopting RepoSense for your own use.")])])} },function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('small',[_v("["),_c('span',[_c('strong',[_v("Powered by")])]),_v(" "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"30"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.2")]),_v(", generated on Tue, 14 May 2024, 13:12:51 UTC]")])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('small',[_v("["),_c('span',[_c('strong',[_v("Powered by")])]),_v(" "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"30"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.2")]),_v(", generated on Thu, 16 May 2024, 22:31:25 UTC]")])])])} }]; \ No newline at end of file diff --git a/ug/runSh.html b/ug/runSh.html index 93270cdea2..d9b24f1d18 100644 --- a/ug/runSh.html +++ b/ug/runSh.html @@ -14,7 +14,7 @@

    You are looking at the user documentation for the most recent master branch of RepoSense (not released to the public yet). The documentation for the latest public release is here.

    Appendix: run.sh format

    run.sh is a script used for automating RepoSense report generation.

    Customizing the RepoSense command

    You can update the RepoSense command (i.e., the last line) in the run.sh to match your needs.

    Specifying which version of RepoSense to use

    Depending on which version you wish to use for report generation, add one of the following flags to the line ./get-reposense.py in run.sh (e.g., ./get-reposense.py --release):

    • --release: Use the latest release (Stable)
    • --master: Use the latest version of the master branch
    • --tag TAG (e.g. --tag v1.6.1): Use the version identified by the Git tag given
    • --commit COMMIT (e.g. --commit abc123): Use the version identified by the Git commit SHA given
    [Powered by MarkBind 5.5.2, generated on Tue, 14 May 2024, 13:12:51 UTC]
    +

    You are looking at the user documentation for the most recent master branch of RepoSense (not released to the public yet). The documentation for the latest public release is here.

    Appendix: run.sh format

    run.sh is a script used for automating RepoSense report generation.

    Customizing the RepoSense command

    You can update the RepoSense command (i.e., the last line) in the run.sh to match your needs.

    Specifying which version of RepoSense to use

    Depending on which version you wish to use for report generation, add one of the following flags to the line ./get-reposense.py in run.sh (e.g., ./get-reposense.py --release):

    • --release: Use the latest release (Stable)
    • --master: Use the latest version of the master branch
    • --tag TAG (e.g. --tag v1.6.1): Use the version identified by the Git tag given
    • --commit COMMIT (e.g. --commit abc123): Use the version identified by the Git commit SHA given
    [Powered by MarkBind 5.5.2, generated on Thu, 16 May 2024, 22:31:25 UTC]
    diff --git a/ug/runSh.page-vue-render.js b/ug/runSh.page-vue-render.js index fae5c481af..b20ffe8fce 100644 --- a/ug/runSh.page-vue-render.js +++ b/ug/runSh.page-vue-render.js @@ -1,7 +1,7 @@ var pageVueRenderFn = function anonymous( ) { -with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"fixed":""}},[_c('navbar',{attrs:{"type":"dark"},scopedSlots:_u([{key:"brand",fn:function(){return [_c('a',{staticClass:"navbar-brand",attrs:{"href":"/index.html","title":"Home"}},[_c('img',{attrs:{"width":"30px","src":"/favicon.ico"}})])]},proxy:true},{key:"right",fn:function(){return [_c('li',[_c('form',{staticClass:"navbar-form"},[_c('searchbar',{attrs:{"data":searchData,"placeholder":"Search","on-hit":searchCallback,"menu-align-right":""}})],1)])]},proxy:true}])},[_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/index.html"}},[_v("HOME")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/showcase.html"}},[_v("SHOWCASE")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/ug/index.html"}},[_v("USER GUIDE")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/dg/index.html"}},[_v("DEVELOPER GUIDE")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/about.html"}},[_v("ABOUT")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/contact.html"}},[_v("CONTACT")])]),_v(" "),_c('li',{attrs:{"tags":"dev"}},[_c('a',{staticClass:"nav-link",attrs:{"href":"https://reposense.org","target":"_blank"}},[_c('span',[_c('span',{staticClass:"fas fa-external-link-alt",attrs:{"aria-hidden":"true"}}),_v(" PRODUCTION SITE")])])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"https://github.com/RepoSense/reposense","target":"_blank"}},[_c('span',[_c('span',{staticClass:"fab fa-github",attrs:{"aria-hidden":"true"}})])])])]),_v(" "),_m(0)],1),_v(" "),_c('div',{attrs:{"id":"flex-body"}},[_c('overlay-source',{staticClass:"fixed-header-padding",attrs:{"id":"site-nav","tag-name":"nav","to":"site-nav"}},[_c('div',{staticClass:"site-nav-top"},[_c('div',{staticClass:"font-weight-bold mb-2",staticStyle:{"font-size":"1.25rem"}},[_c('span',[_c('strong',[_c('strong',[_v("USER GUIDE")])])])])]),_v(" "),_c('div',{staticClass:"nav-component slim-scroll"},[_c('div',[_c('site-nav',[_c('overlay-source',{staticClass:"site-nav-list site-nav-list-root",attrs:{"tag-name":"ul","to":"mb-site-nav"}},[_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/index.html"}},[_c('strong',[_v("Overview")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/generatingReports.html"}},[_c('strong',[_v("Generating reports")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/usingReports.html"}},[_c('strong',[_v("Using reports")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/customizingReports.html"}},[_c('strong',[_v("Customizing reports")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/sharingReports.html"}},[_c('strong',[_v("Sharing reports")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('strong',[_v("Appendices")]),_v(" "),_c('div',{staticClass:"site-nav-dropdown-btn-container"},[_c('i',{staticClass:"site-nav-dropdown-btn-icon site-nav-rotate-icon",attrs:{"onclick":"handleSiteNavClick(this.parentNode.parentNode, false); event.stopPropagation();"}},[_c('span',{staticClass:"glyphicon glyphicon-menu-down",attrs:{"aria-hidden":"true"}})])])]),_c('ul',{staticClass:"site-nav-dropdown-container site-nav-dropdown-container-open site-nav-list"},[_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/cli.html"}},[_v("CLI syntax reference")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/configFiles.html"}},[_v("Config files format")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/authorConfigSyntax.html"}},[_v("Advanced syntax: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/usingAuthorTags.html"}},[_v("Using "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("@@author")]),_v(" tags")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/withNetlify.html"}},[_v("RepoSense with Netlify")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/withGithubActions.html"}},[_v("RepoSense with GitHub Actions")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/withTravis.html"}},[_v("RepoSense with Travis")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/runSh.html"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("run.sh")]),_v(" format")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/faq.html"}},[_v("FAQ")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/troubleshooting.html"}},[_v("Troubleshooting")])])])])])])],1)],1)])]),_v(" "),_c('div',{staticClass:"fixed-header-padding",attrs:{"id":"content-wrapper"}},[_m(1),_v(" "),_m(2),_v(" "),_m(3),_v(" "),_m(4),_v(" "),_c('div',{staticClass:"indented-level0"},[_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('span',[_c('span',{staticClass:"glyphicon glyphicon-log-in",attrs:{"aria-hidden":"true"}})]),_v(" Appendix: "),_c('strong',[_v("CLI syntax reference")])])]},proxy:true}])},[_v(" "),_c('div',[_c('h1',{staticClass:"display-4",attrs:{"id":"appendix-cli-syntax-reference"}},[_c('span',[_v("Appendix: CLI syntax reference")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#appendix-cli-syntax-reference","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{staticClass:"lead"},[_c('p',[_v("The command "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar")]),_v(" takes several flags.")])]),_v(" "),_c('box',[_c('p',[_c('strong',[_v("Examples")]),_v(":")]),_v(" "),_c('p',[_v("An example of a command using most parameters:"),_c('br'),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar --repos https://github.com/reposense/RepoSense.git --output ./report_folder --since 31/1/2017 --until 31/12/2018 --formats java adoc xml --view --ignore-standalone-config --last-modified-date --timezone UTC+08 --find-previous-authors --analyze-authorship --originality-threshold 0.66")])]),_v(" "),_c('p',[_v("Same command as above but using most parameters in alias format:"),_c('br'),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar -r https://github.com/reposense/RepoSense.git -o ./report_folder -s 31/1/2017 -u 31/12/2018 -f java adoc xml -v -i -l -t UTC+08 -F -A -ot 0.66")])])]),_v(" "),_c('p',[_v("The section below provides explanations for each of the flags.")]),_v(" "),_c('h3',{attrs:{"id":"analyze-authorship-a"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--analyze-authorship")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-A")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#analyze-authorship-a","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--analyze-authorship")])]),_v(": Performs further analysis to distinguish between partial and full credit attribution for\nlines of code assigned to the author.")]),_v(" "),_c('ul',[_c('li',[_v("Default: this feature is turned "),_c('em',[_c('strong',[_v("off")])]),_v(" by default and the author will receive partial credits for all lines of\ncode, as the code lines are at least partial credit but may not qualify for full credit.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-A")]),_v(" (upper case)")]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--analyze-authorship")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-A")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("A darker background colour represents full credit, while a lighter background colour represents partial credit.")]),_v(" "),_c('p',[_v("If the code is attributed to a different author by the user via "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("@@author")]),_v(" tag, then the new author will be given\npartial credit.")])]),_v(" "),_c('h3',{attrs:{"id":"assets-a"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--assets")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-a")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#assets-a","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{attrs:{"id":"section-assets"}},[_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--assets ASSETS_DIRECTORY")])]),_v(": Specifies where to place assets for report generation.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ASSETS_DIRECTORY")]),_v(" The directory containing the assets files. A "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("favicon.ico")]),_v(" file can be placed here to customize the favicon of the dashboard, while a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("title.md")]),_v(" file can be placed to customize the "),_c('a',{attrs:{"href":"https://reposense.org/ug/customizingReports.html#add-a-title"}},[_v("title")]),_v(" of the report using "),_c('a',{attrs:{"href":"https://www.markdownguide.org/basic-syntax/"}},[_v("Markdown syntax")]),_v(".")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-a")])]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--assets ./assets")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-a ./assets")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("If "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--assets")]),_v(" is not specified, RepoSense looks for assets in the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./assets")]),_v(" directory.")])])])],1),_v(" "),_c('h3',{attrs:{"id":"config-c"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--config")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-c")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#config-c","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{attrs:{"id":"section-config"}},[_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--config CONFIG_DIRECTORY")])]),_v(": Specifies that config files located in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("CONFIG_DIRECTORY")]),_v(" should be used to customize the report.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("CONFIG_DIRECTORY")]),_v(" The directory containing the config files. Should contain a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(" file. Optionally, can contain an "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(" file or/and a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("group-config.csv")]),_v(" file or/and a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("report-config.json")]),_v(" file or/and a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("blurbs.md")]),_v(" file.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-c")])]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar --config ./config")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("Cannot be used with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repos")]),_v(". The "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repos")]),_v(" flag will take precedence over this flag.")]),_v(" "),_c('li',[_v("If both "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repos")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--config")]),_v(" are not specified, RepoSense looks for config files in the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./config")]),_v(" directory.")]),_v(" "),_c('li',[_v("Config files must follow "),_c('a',{attrs:{"href":"/RepoSense/ug/configFiles.html"}},[_v("this")]),_v(" format.")])])])],1),_v(" "),_c('h3',{attrs:{"id":"formats-f"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--formats")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-f")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#formats-f","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--formats LIST_OF_FORMATS")])]),_v(": Specifies which file extensions to be included in the analysis.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("LIST_OF_FORMATS")]),_v(" A space-separated list of file extensions that should be included in the analysis."),_c('br'),_v("\nDefault: all file formats")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-f")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--formats css fxml gradle")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-f css fxml gradle")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Binary file formats, such as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("jpg")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("png")]),_v(","),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("exe")]),_v(","),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("zip")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("rar")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("docx")]),_v(", and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("pptx")]),_v(", all will be labelled as the file type "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("binary")]),_v(" in the generated report.")])]),_v(" "),_c('h3',{attrs:{"id":"find-previous-authors-f"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--find-previous-authors")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-F")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#find-previous-authors-f","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--find-previous-authors")])]),_v(": Utilizes Git blame's ignore revisions functionality, RepoSense will attempt to blame the line changes caused by commits in the ignore commit list to the previous authors who altered those lines (if available).")]),_v(" "),_c('ul',[_c('li',[_v("Default: RepoSense will assume that no authors are responsible for the code changes in the lines altered by commits in the ignore commit list.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-F")]),_v(" (uppercase F)")]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--find-previous-authors")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-F")])])]),_v(" "),_c('h3',{attrs:{"id":"help-h"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--help")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-h")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#help-h","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--help")])]),_v(": Shows the help message.")]),_v(" "),_c('ul',[_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-h")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Cannot be used with any other flags. This flag takes precedence over all other flags.")])]),_v(" "),_c('h3',{attrs:{"id":"ignore-standalone-config-i"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--ignore-standalone-config")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-i")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#ignore-standalone-config-i","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--ignore-standalone-config")])]),_v(": Specifies that the standalone config file in the repo should be ignored.")]),_v(" "),_c('ul',[_c('li',[_v("Default: the standalone config file is not ignored")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-i")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--ignore-standalone-config")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-i")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("This flag overrides the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Ignore standalone config")]),_v(" field in the CSV config file.")])]),_v(" "),_c('h3',{attrs:{"id":"ignore-filesize-limit-i"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--ignore-filesize-limit")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-I")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#ignore-filesize-limit-i","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--ignore-filesize-limit")])]),_v(": Specifies that the file size limit (both default and user-defined) should be ignored during the analysis.")]),_v(" "),_c('ul',[_c('li',[_v("Default: the file size limit is not ignored")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-I")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--ignore-filesize-limit")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-I")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("All files are subject to a default file size limit or a custom size limit set by the user. Most files should not be\naffected by the default size limit. This flag can be useful for including files in your report that are affected by\nthe size limit. Note that this flag may result in large report sizes and/or slower report generation.")])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("This flag overrides the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Ignore file size limit")]),_v(" field in the CSV config file.")])]),_v(" "),_c('h3',{attrs:{"id":"last-modified-date-l"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--last-modified-date")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-l")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#last-modified-date-l","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--last-modified-date")])]),_v(": Specifies that the last modified date of each line of code should be added to "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("authorship.json")]),_v(".")]),_v(" "),_c('ul',[_c('li',[_v("Default: the last modified date of each line of code will not be added to "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("authorship.json")])]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-l")]),_v(" (lowercase L)")]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--last-modified-date")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-l")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("Cannot be used with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--shallow-cloning")]),_v(". This may result in an incorrect last modified date.")]),_v(" "),_c('li',[_v("The last modified dates will be in the same timezone specified with the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--timezone")]),_v(" flag.")])])]),_v(" "),_c('h3',{attrs:{"id":"originality-threshold-ot"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--originality-threshold")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-ot")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#originality-threshold-ot","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--originality-threshold [VALUE]")])]),_v(": Specifies the cut-off point for partial and full credit\nin "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--analyze-authorship")]),_v(". Author will be given full credit if their contribution exceeds this threshold, else partial\ncredit is given.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("VALUE")]),_v(" Optional. Acceptable range: [0.0, 1.0]."),_c('br'),_v("\nDefault: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("0.51")])]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-ot")])]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--originality-threshold 0.66")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-ot 0.66")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("Requires "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--analyze-authorship")]),_v(" flag.")]),_v(" "),_c('li',[_v("An author's contribution, or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("originality score")]),_v(", is calculated using Levenshtein Distance (Edit Distance) algorithm.\nWe compare the difference between current code line and its previous versions.")])])]),_v(" "),_c('h3',{attrs:{"id":"output-o"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--output")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-o")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#output-o","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--output OUTPUT_DIRECTORY")])]),_v(": Indicates where to save the report generated.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("OUTPUT_DIRECTORY")]),_v(" The location for the generated "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("reposense-report")]),_v(" folder."),_c('br'),_v("\nDefault: current directory")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-o")])]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--output ./foo")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-o ./foo")]),_v(" (the report will be in the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./foo/reposense-report")]),_v(" folder)")])]),_v(" "),_c('h3',{attrs:{"id":"period-p"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--period")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-p")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#period-p","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--period PERIOD")])]),_v(": Specifies the period of analysis window.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("PERIOD")]),_v(" The period of analysis window, in the format "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("nd")]),_v(" (for n days) or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("nw")]),_v(" (for n weeks). It is used to calculate end date if only start date is specified, or calculate end date if only start date is specified.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-p")])]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--period 30d")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--period 4w")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("If both start date and end date are not specified, the date of generating the report will be taken as the end date.")]),_v(" "),_c('li',[_v("May analyze the incorrect date range if used with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since d1")]),_v(". The program will throw a warning.")]),_v(" "),_c('li',[_v("Cannot be used with both "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--until")]),_v(". The program will throw an exception.")])])]),_v(" "),_c('h3',{attrs:{"id":"repo-repos-r"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repo")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repos")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-r")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#repo-repos-r","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repo REPO_LOCATION")])]),_v(": Specifies which repositories to analyze.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("REPO_LOCATION")]),_v(" A list of URLs or the disk location of the git repositories to analyze, separated by spaces.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-r")])]),_v(" "),_c('li',[_v("Examples:\n"),_c('ul',[_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repos https://github.com/reposense/RepoSense.git")])]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repo https://github.com/reposense/RepoSense.git c:/myRepose/foo/bar")]),_v(": analyzes the two specified repos (one remote, one local) and generates one report containing details of both.")])])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Cannot be used with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--config")]),_v(". This flag takes precedence over "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--config")]),_v(".")])]),_v(" "),_c('h3',{attrs:{"id":"shallow-cloning-s"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--shallow-cloning")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-S")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#shallow-cloning-s","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--shallow-cloning")])]),_v(": Clones repositories using Git's shallow cloning functionality, which can significantly reduce the time taken to clone large repositories. However, the flag should not be used for smaller repositories where the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(".git")]),_v(" file is smaller than 500 MB, as it would create overhead.")]),_v(" "),_c('ul',[_c('li',[_v("Default: RepoSense does not clone repositories using Git's shallow cloning functionality.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-S")]),_v(" (uppercase S)")]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--shallow-cloning")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-S")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Cannot be used with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--last-modified-date")]),_v(". This may result in an incorrect last modified date.")])]),_v(" "),_c('h3',{attrs:{"id":"since-s"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-s")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#since-s","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since START_DATE")])]),_v(": Specifies the start date for the period to be analyzed.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("START_DATE")]),_v(" The first day of the period to be analyzed, in the format "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("DD/MM/YYYY")]),_v("."),_c('br'),_v("\nDefault: one month before the current date")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-s")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since 21/10/2017")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-s 21/10/2017")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("If the start date is not specified, only commits made one month before the end date (if specified) or the date of generating the report, will be captured and analyzed.")]),_v(" "),_c('li',[_v("If "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("d1")]),_v(" is specified as the start date ("),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since d1")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-s d1")]),_v("), then the program will search for the earliest commit date of all repositories and use that as the start date.")]),_v(" "),_c('li',[_v("If "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("d1")]),_v(" is specified together with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--period")]),_v(", then the program will warn that the date range being analyzed may be incorrect.")])])]),_v(" "),_c('h3',{attrs:{"id":"timezone-t"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--timezone")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-t")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#timezone-t","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--timezone ZONE_ID")])]),_v(": Indicates the timezone to be used for the analysis.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ZONE_ID")]),_v(" The timezone in the format "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ZONE_ID[±hh[mm]]")]),_v("."),_c('br'),_v("\nDefault: system's default timezone")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-t")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--timezone UTC+08")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-t UTC-1030")])])]),_v(" "),_c('h3',{attrs:{"id":"until-u"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--until")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-u")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#until-u","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--until END_DATE")])]),_v(": Specifies the end date of the analysis period.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("END_DATE")]),_v(" The last date of the period to be analyzed, in the format "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("DD/MM/YYYY")]),_v("."),_c('br'),_v("\nDefault: current date")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-u")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--until 21/10/2017")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-u 21/10/2017")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Note: If the end date is not specified, the date of generating the report will be taken as the end date.")])]),_v(" "),_c('h3',{attrs:{"id":"version-v"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--version")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-V")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#version-v","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--version")])]),_v(": Shows the version of RepoSense.")]),_v(" "),_c('ul',[_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-V")]),_v(" (upper case)")])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Cannot be used with any other flags. This flag takes precedence over all other flags other than "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--help")]),_v(".")])]),_v(" "),_c('h3',{attrs:{"id":"view-v"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--view")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-v")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#view-v","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--view [REPORT_FOLDER]")])]),_v(": Specifies that the report should be opened in the default browser.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("REPORT_FOLDER")]),_v(" Optional. If specified, no analysis will be performed and the report specified by the argument will be opened."),_c('br'),_v("\nDefault: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./reposense-report")])]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-v")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--view")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-v")])])])],1)])],1),_v(" "),_c('p'),_v(" "),_m(5),_v(" "),_m(6),_v(" "),_m(7)])],1),_v(" "),_m(8)])} +with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"fixed":""}},[_c('navbar',{attrs:{"type":"dark"},scopedSlots:_u([{key:"brand",fn:function(){return [_c('a',{staticClass:"navbar-brand",attrs:{"href":"/index.html","title":"Home"}},[_c('img',{attrs:{"width":"30px","src":"/favicon.ico"}})])]},proxy:true},{key:"right",fn:function(){return [_c('li',[_c('form',{staticClass:"navbar-form"},[_c('searchbar',{attrs:{"data":searchData,"placeholder":"Search","on-hit":searchCallback,"menu-align-right":""}})],1)])]},proxy:true}])},[_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/index.html"}},[_v("HOME")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/showcase.html"}},[_v("SHOWCASE")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/ug/index.html"}},[_v("USER GUIDE")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/dg/index.html"}},[_v("DEVELOPER GUIDE")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/about.html"}},[_v("ABOUT")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/contact.html"}},[_v("CONTACT")])]),_v(" "),_c('li',{attrs:{"tags":"dev"}},[_c('a',{staticClass:"nav-link",attrs:{"href":"https://reposense.org","target":"_blank"}},[_c('span',[_c('span',{staticClass:"fas fa-external-link-alt",attrs:{"aria-hidden":"true"}}),_v(" PRODUCTION SITE")])])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"https://github.com/RepoSense/reposense","target":"_blank"}},[_c('span',[_c('span',{staticClass:"fab fa-github",attrs:{"aria-hidden":"true"}})])])])]),_v(" "),_m(0)],1),_v(" "),_c('div',{attrs:{"id":"flex-body"}},[_c('overlay-source',{staticClass:"fixed-header-padding",attrs:{"id":"site-nav","tag-name":"nav","to":"site-nav"}},[_c('div',{staticClass:"site-nav-top"},[_c('div',{staticClass:"font-weight-bold mb-2",staticStyle:{"font-size":"1.25rem"}},[_c('span',[_c('strong',[_c('strong',[_v("USER GUIDE")])])])])]),_v(" "),_c('div',{staticClass:"nav-component slim-scroll"},[_c('div',[_c('site-nav',[_c('overlay-source',{staticClass:"site-nav-list site-nav-list-root",attrs:{"tag-name":"ul","to":"mb-site-nav"}},[_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/index.html"}},[_c('strong',[_v("Overview")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/generatingReports.html"}},[_c('strong',[_v("Generating reports")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/usingReports.html"}},[_c('strong',[_v("Using reports")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/customizingReports.html"}},[_c('strong',[_v("Customizing reports")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/sharingReports.html"}},[_c('strong',[_v("Sharing reports")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('strong',[_v("Appendices")]),_v(" "),_c('div',{staticClass:"site-nav-dropdown-btn-container"},[_c('i',{staticClass:"site-nav-dropdown-btn-icon site-nav-rotate-icon",attrs:{"onclick":"handleSiteNavClick(this.parentNode.parentNode, false); event.stopPropagation();"}},[_c('span',{staticClass:"glyphicon glyphicon-menu-down",attrs:{"aria-hidden":"true"}})])])]),_c('ul',{staticClass:"site-nav-dropdown-container site-nav-dropdown-container-open site-nav-list"},[_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/cli.html"}},[_v("CLI syntax reference")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/configFiles.html"}},[_v("Config files format")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/authorConfigSyntax.html"}},[_v("Advanced syntax: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/usingAuthorTags.html"}},[_v("Using "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("@@author")]),_v(" tags")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/withNetlify.html"}},[_v("RepoSense with Netlify")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/withGithubActions.html"}},[_v("RepoSense with GitHub Actions")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/withTravis.html"}},[_v("RepoSense with Travis")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/runSh.html"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("run.sh")]),_v(" format")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/faq.html"}},[_v("FAQ")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/troubleshooting.html"}},[_v("Troubleshooting")])])])])])])],1)],1)])]),_v(" "),_c('div',{staticClass:"fixed-header-padding",attrs:{"id":"content-wrapper"}},[_m(1),_v(" "),_m(2),_v(" "),_m(3),_v(" "),_m(4),_v(" "),_c('div',{staticClass:"indented-level0"},[_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('span',[_c('span',{staticClass:"glyphicon glyphicon-log-in",attrs:{"aria-hidden":"true"}})]),_v(" Appendix: "),_c('strong',[_v("CLI syntax reference")])])]},proxy:true}])},[_v(" "),_c('div',[_c('h1',{staticClass:"display-4",attrs:{"id":"appendix-cli-syntax-reference"}},[_c('span',[_v("Appendix: CLI syntax reference")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#appendix-cli-syntax-reference","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{staticClass:"lead"},[_c('p',[_v("The command "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar")]),_v(" takes several flags.")])]),_v(" "),_c('box',[_c('p',[_c('strong',[_v("Examples")]),_v(":")]),_v(" "),_c('p',[_v("An example of a command using most parameters:"),_c('br'),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar --repos https://github.com/reposense/RepoSense.git --output ./report_folder --since 31/1/2017 --until 31/12/2018 --formats java adoc xml --view --ignore-standalone-config --last-modified-date --timezone UTC+08 --find-previous-authors --analyze-authorship --originality-threshold 0.66")])]),_v(" "),_c('p',[_v("Same command as above but using most parameters in alias format:"),_c('br'),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar -r https://github.com/reposense/RepoSense.git -o ./report_folder -s 31/1/2017 -u 31/12/2018 -f java adoc xml -v -i -l -t UTC+08 -F -A -ot 0.66")])])]),_v(" "),_c('p',[_v("The section below provides explanations for each of the flags.")]),_v(" "),_c('h3',{attrs:{"id":"analyze-authorship-a"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--analyze-authorship")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-A")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#analyze-authorship-a","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--analyze-authorship")])]),_v(": Performs further analysis to distinguish between partial and full credit attribution for\nlines of code assigned to the author.")]),_v(" "),_c('ul',[_c('li',[_v("Default: this feature is turned "),_c('em',[_c('strong',[_v("off")])]),_v(" by default and the author will receive partial credits for all lines of\ncode, as the code lines are at least partial credit but may not qualify for full credit.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-A")]),_v(" (upper case)")]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--analyze-authorship")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-A")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("A darker background colour represents full credit, while a lighter background colour represents partial credit.")]),_v(" "),_c('p',[_v("If the code is attributed to a different author by the user via "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("@@author")]),_v(" tag, then the new author will be given\npartial credit.")])]),_v(" "),_c('h3',{attrs:{"id":"assets-a"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--assets")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-a")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#assets-a","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{attrs:{"id":"section-assets"}},[_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--assets ASSETS_DIRECTORY")])]),_v(": Specifies where to place assets for report generation.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ASSETS_DIRECTORY")]),_v(" The directory containing the assets files. A "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("favicon.ico")]),_v(" file can be placed here to customize the favicon of the dashboard, while a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("title.md")]),_v(" file can be placed to customize the "),_c('a',{attrs:{"href":"https://reposense.org/ug/customizingReports.html#add-a-title"}},[_v("title")]),_v(" of the report using "),_c('a',{attrs:{"href":"https://www.markdownguide.org/basic-syntax/"}},[_v("Markdown syntax")]),_v(".")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-a")])]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--assets ./assets")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-a ./assets")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("If "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--assets")]),_v(" is not specified, RepoSense looks for assets in the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./assets")]),_v(" directory.")])])])],1),_v(" "),_c('h3',{attrs:{"id":"config-c"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--config")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-c")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#config-c","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{attrs:{"id":"section-config"}},[_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--config CONFIG_DIRECTORY")])]),_v(": Specifies that config files located in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("CONFIG_DIRECTORY")]),_v(" should be used to customize the report.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("CONFIG_DIRECTORY")]),_v(" The directory containing the config files. Should contain a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(" file. Optionally, can contain an "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(" file or/and a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("group-config.csv")]),_v(" file or/and a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("report-config.json")]),_v(" file or/and a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("blurbs.md")]),_v(" file.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-c")])]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar --config ./config")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("Cannot be used with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repos")]),_v(". The "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repos")]),_v(" flag will take precedence over this flag.")]),_v(" "),_c('li',[_v("If both "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repos")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--config")]),_v(" are not specified, RepoSense looks for config files in the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./config")]),_v(" directory.")]),_v(" "),_c('li',[_v("Config files must follow "),_c('a',{attrs:{"href":"/RepoSense/ug/configFiles.html"}},[_v("this")]),_v(" format.")])])])],1),_v(" "),_c('h3',{attrs:{"id":"formats-f"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--formats")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-f")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#formats-f","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--formats LIST_OF_FORMATS")])]),_v(": Specifies which file extensions to be included in the analysis.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("LIST_OF_FORMATS")]),_v(" A space-separated list of file extensions that should be included in the analysis."),_c('br'),_v("\nDefault: all file formats")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-f")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--formats css fxml gradle")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-f css fxml gradle")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Binary file formats, such as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("jpg")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("png")]),_v(","),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("exe")]),_v(","),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("zip")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("rar")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("docx")]),_v(", and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("pptx")]),_v(", all will be labelled as the file type "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("binary")]),_v(" in the generated report.")])]),_v(" "),_c('h3',{attrs:{"id":"find-previous-authors-f"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--find-previous-authors")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-F")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#find-previous-authors-f","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--find-previous-authors")])]),_v(": Utilizes Git blame's ignore revisions functionality, RepoSense will attempt to blame the line changes caused by commits in the ignore commit list to the previous authors who altered those lines (if available).")]),_v(" "),_c('ul',[_c('li',[_v("Default: RepoSense will assume that no authors are responsible for the code changes in the lines altered by commits in the ignore commit list.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-F")]),_v(" (uppercase F)")]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--find-previous-authors")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-F")])])]),_v(" "),_c('h3',{attrs:{"id":"help-h"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--help")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-h")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#help-h","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--help")])]),_v(": Shows the help message.")]),_v(" "),_c('ul',[_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-h")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Cannot be used with any other flags. This flag takes precedence over all other flags.")])]),_v(" "),_c('h3',{attrs:{"id":"ignore-standalone-config-i"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--ignore-standalone-config")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-i")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#ignore-standalone-config-i","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--ignore-standalone-config")])]),_v(": Specifies that the standalone config file in the repo should be ignored.")]),_v(" "),_c('ul',[_c('li',[_v("Default: the standalone config file is not ignored")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-i")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--ignore-standalone-config")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-i")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("This flag overrides the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Ignore standalone config")]),_v(" field in the CSV config file.")])]),_v(" "),_c('h3',{attrs:{"id":"ignore-filesize-limit-i"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--ignore-filesize-limit")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-I")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#ignore-filesize-limit-i","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--ignore-filesize-limit")])]),_v(": Specifies that the file size limit (both default and user-defined) should be ignored during the analysis.")]),_v(" "),_c('ul',[_c('li',[_v("Default: the file size limit is not ignored")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-I")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--ignore-filesize-limit")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-I")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("All files are subject to a default file size limit or a custom size limit set by the user. Most files should not be\naffected by the default size limit. This flag can be useful for including files in your report that are affected by\nthe size limit. Note that this flag may result in large report sizes and/or slower report generation.")])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("This flag overrides the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Ignore file size limit")]),_v(" field in the CSV config file.")])]),_v(" "),_c('h3',{attrs:{"id":"last-modified-date-l"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--last-modified-date")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-l")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#last-modified-date-l","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--last-modified-date")])]),_v(": Specifies that the last modified date of each line of code should be added to "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("authorship.json")]),_v(".")]),_v(" "),_c('ul',[_c('li',[_v("Default: the last modified date of each line of code will not be added to "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("authorship.json")])]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-l")]),_v(" (lowercase L)")]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--last-modified-date")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-l")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("Cannot be used with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--shallow-cloning")]),_v(". This may result in an incorrect last modified date.")]),_v(" "),_c('li',[_v("The last modified dates will be in the same timezone specified with the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--timezone")]),_v(" flag.")])])]),_v(" "),_c('h3',{attrs:{"id":"originality-threshold-ot"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--originality-threshold")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-ot")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#originality-threshold-ot","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--originality-threshold [VALUE]")])]),_v(": Specifies the cut-off point for partial and full credit\nin "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--analyze-authorship")]),_v(". Author will be given full credit if their contribution exceeds this threshold, else partial\ncredit is given.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("VALUE")]),_v(" Optional. Acceptable range: [0.0, 1.0]."),_c('br'),_v("\nDefault: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("0.51")])]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-ot")])]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--originality-threshold 0.66")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-ot 0.66")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("Requires "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--analyze-authorship")]),_v(" flag.")]),_v(" "),_c('li',[_v("An author's contribution, or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("originality score")]),_v(", is calculated using Levenshtein Distance (Edit Distance) algorithm.\nWe compare the difference between current code line and its previous versions.")])])]),_v(" "),_c('h3',{attrs:{"id":"output-o"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--output")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-o")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#output-o","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--output OUTPUT_DIRECTORY")])]),_v(": Indicates where to save the report generated.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("OUTPUT_DIRECTORY")]),_v(" The location for the generated "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("reposense-report")]),_v(" folder."),_c('br'),_v("\nDefault: current directory")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-o")])]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--output ./foo")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-o ./foo")]),_v(" (the report will be in the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./foo/reposense-report")]),_v(" folder)")])]),_v(" "),_c('h3',{attrs:{"id":"period-p"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--period")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-p")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#period-p","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--period PERIOD")])]),_v(": Specifies the period of analysis window.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("PERIOD")]),_v(" The period of analysis window, in the format "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("nd")]),_v(" (for n days) or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("nw")]),_v(" (for n weeks). It is used to calculate end date if only start date is specified, or calculate end date if only start date is specified.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-p")])]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--period 30d")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--period 4w")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("If both start date and end date are not specified, the date of generating the report will be taken as the end date.")]),_v(" "),_c('li',[_v("May analyze the incorrect date range if used with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since d1")]),_v(". The program will throw a warning.")]),_v(" "),_c('li',[_v("Cannot be used with both "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--until")]),_v(". The program will throw an exception.")])])]),_v(" "),_c('h3',{attrs:{"id":"repo-repos-r"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repo")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repos")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-r")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#repo-repos-r","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repo REPO_LOCATION")])]),_v(": Specifies which repositories to analyze.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("REPO_LOCATION")]),_v(" A list of URLs or the disk location of the git repositories to analyze, separated by spaces.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-r")])]),_v(" "),_c('li',[_v("Examples:\n"),_c('ul',[_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repos https://github.com/reposense/RepoSense.git")])]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repo https://github.com/reposense/RepoSense.git c:/myRepose/foo/bar")]),_v(": analyzes the two specified repos (one remote, one local) and generates one report containing details of both.")])])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Cannot be used with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--config")]),_v(". This flag takes precedence over "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--config")]),_v(".")])]),_v(" "),_c('h3',{attrs:{"id":"shallow-cloning-s"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--shallow-cloning")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-S")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#shallow-cloning-s","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--shallow-cloning")])]),_v(": Clones repositories using Git's shallow cloning functionality, which can significantly reduce the time taken to clone large repositories. However, the flag should not be used for smaller repositories where the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(".git")]),_v(" file is smaller than 500 MB, as it would create overhead.")]),_v(" "),_c('ul',[_c('li',[_v("Default: RepoSense does not clone repositories using Git's shallow cloning functionality.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-S")]),_v(" (uppercase S)")]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--shallow-cloning")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-S")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Cannot be used with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--last-modified-date")]),_v(". This may result in an incorrect last modified date.")])]),_v(" "),_c('h3',{attrs:{"id":"since-s"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-s")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#since-s","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since START_DATE")])]),_v(": Specifies the start date for the period to be analyzed.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("START_DATE")]),_v(" The first day of the period to be analyzed, in the format "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("DD/MM/YYYY")]),_v("."),_c('br'),_v("\nDefault: one month before the current date")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-s")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since 21/10/2017")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-s 21/10/2017")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("If the start date is not specified, only commits made one month before the end date (if specified) or the date of generating the report, will be captured and analyzed.")]),_v(" "),_c('li',[_v("If "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("d1")]),_v(" is specified as the start date ("),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since d1")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-s d1")]),_v("), then the program will search for the earliest commit date of all repositories and use that as the start date.")]),_v(" "),_c('li',[_v("If "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("d1")]),_v(" is specified together with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--period")]),_v(", then the program will warn that the date range being analyzed may be incorrect.")])])]),_v(" "),_c('h3',{attrs:{"id":"timezone-t"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--timezone")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-t")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#timezone-t","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--timezone ZONE_ID")])]),_v(": Indicates the timezone to be used for the analysis.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ZONE_ID")]),_v(" The timezone in the format "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ZONE_ID[±hh[mm]]")]),_v("."),_c('br'),_v("\nDefault: system's default timezone")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-t")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--timezone UTC+08")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-t UTC-1030")])])]),_v(" "),_c('h3',{attrs:{"id":"until-u"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--until")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-u")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#until-u","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--until END_DATE")])]),_v(": Specifies the end date of the analysis period.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("END_DATE")]),_v(" The last date of the period to be analyzed, in the format "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("DD/MM/YYYY")]),_v("."),_c('br'),_v("\nDefault: current date")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-u")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--until 21/10/2017")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-u 21/10/2017")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Note: If the end date is not specified, the date of generating the report will be taken as the end date.")])]),_v(" "),_c('h3',{attrs:{"id":"version-v"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--version")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-V")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#version-v","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--version")])]),_v(": Shows the version of RepoSense.")]),_v(" "),_c('ul',[_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-V")]),_v(" (upper case)")])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Cannot be used with any other flags. This flag takes precedence over all other flags other than "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--help")]),_v(".")])]),_v(" "),_c('h3',{attrs:{"id":"view-v"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--view")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-v")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#view-v","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--view [REPORT_FOLDER]")])]),_v(": Specifies that the report should be opened in the default browser.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("REPORT_FOLDER")]),_v(" Optional. If specified, no analysis will be performed and the report specified by the argument will be opened."),_c('br'),_v("\nDefault: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./reposense-report")])]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-v")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--view")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-v")])])])],1)])],1),_v(" "),_c('p'),_v(" "),_m(5),_v(" "),_m(6),_v(" "),_m(7)]),_v(" "),_c('overlay-source',{staticClass:"fixed-header-padding",attrs:{"id":"page-nav","tag-name":"nav","to":"page-nav"}},[_c('div',{staticClass:"nav-component slim-scroll"})])],1),_v(" "),_m(8)])} }; var pageVueStaticRenderFns = [function anonymous( ) { @@ -29,6 +29,6 @@ with(this){return _c('p',[_v("Depending on which version you wish to use for rep with(this){return _c('ul',[_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--release")]),_v(": Use the latest release (Stable)")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--master")]),_v(": Use the latest version of the master branch")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--tag TAG")]),_v(" (e.g. "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--tag v1.6.1")]),_v("): Use the version identified by the Git tag given")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--commit COMMIT")]),_v(" (e.g. "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--commit abc123")]),_v("): Use the version identified by the Git commit SHA given")])])} },function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('small',[_v("["),_c('span',[_c('strong',[_v("Powered by")])]),_v(" "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"30"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.2")]),_v(", generated on Tue, 14 May 2024, 13:12:51 UTC]")])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('small',[_v("["),_c('span',[_c('strong',[_v("Powered by")])]),_v(" "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"30"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.2")]),_v(", generated on Thu, 16 May 2024, 22:31:25 UTC]")])])])} }]; \ No newline at end of file diff --git a/ug/sharingReports.html b/ug/sharingReports.html index 6bfa121524..ca5a6b77e1 100644 --- a/ug/sharingReports.html +++ b/ug/sharingReports.html @@ -11,11 +11,11 @@ - +

    You are looking at the user documentation for the most recent master branch of RepoSense (not released to the public yet). The documentation for the latest public release is here.

    Sharing reports

    Often, you would want to share the RepoSense report with others. For example, a teacher using RepoSense for a programming class might want to share the report privately with tutors or publish it so that everyone can see it.

    The sections below explain various ways of sharing a RepoSense report.

    Share privately

    To share a RepoSense report privately, simply find a way to share the folder containing the report (by default, it will be in a folder named reposense-report). For example, you can zip that folder and share it with the intended recipients.

    You can point the recipients to the Using reports section for guidance on how to view reports.

    Publish on the web

    As RepoSense reports are in a web page format, you can publish a report by simply uploading it onto any web hosting service. Given below are several options that not only allow to publish reports, but also enable various levels of automating the entire process (e.g., automatically update the report daily).

    Embeddable Widgets

    Published reports can additionally be embedded in other websites through iframes. Simply click the clipboard icon to generate and copy the iframe for your desired section of the report for either a single ramp chart or a group of ramp charts. Paste the iframe in any HTML supported document to render it.

    A sample iframe would look like:

    <iframe src="XXX" frameborder="0" width="800px" height="XXXpx"></iframe>
    -

    Adjust the width and height to the desired dimensions as required.

    [Powered by MarkBind 5.5.2, generated on Tue, 14 May 2024, 13:12:51 UTC]
    +

    Adjust the width and height to the desired dimensions as required.

    [Powered by MarkBind 5.5.2, generated on Thu, 16 May 2024, 22:31:25 UTC]
    diff --git a/ug/sharingReports.page-vue-render.js b/ug/sharingReports.page-vue-render.js index 3e8796f082..5bf3b10594 100644 --- a/ug/sharingReports.page-vue-render.js +++ b/ug/sharingReports.page-vue-render.js @@ -1,7 +1,7 @@ var pageVueRenderFn = function anonymous( ) { -with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"fixed":""}},[_c('navbar',{attrs:{"type":"dark"},scopedSlots:_u([{key:"brand",fn:function(){return [_c('a',{staticClass:"navbar-brand",attrs:{"href":"/index.html","title":"Home"}},[_c('img',{attrs:{"width":"30px","src":"/favicon.ico"}})])]},proxy:true},{key:"right",fn:function(){return [_c('li',[_c('form',{staticClass:"navbar-form"},[_c('searchbar',{attrs:{"data":searchData,"placeholder":"Search","on-hit":searchCallback,"menu-align-right":""}})],1)])]},proxy:true}])},[_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/index.html"}},[_v("HOME")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/showcase.html"}},[_v("SHOWCASE")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/ug/index.html"}},[_v("USER GUIDE")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/dg/index.html"}},[_v("DEVELOPER GUIDE")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/about.html"}},[_v("ABOUT")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/contact.html"}},[_v("CONTACT")])]),_v(" "),_c('li',{attrs:{"tags":"dev"}},[_c('a',{staticClass:"nav-link",attrs:{"href":"https://reposense.org","target":"_blank"}},[_c('span',[_c('span',{staticClass:"fas fa-external-link-alt",attrs:{"aria-hidden":"true"}}),_v(" PRODUCTION SITE")])])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"https://github.com/RepoSense/reposense","target":"_blank"}},[_c('span',[_c('span',{staticClass:"fab fa-github",attrs:{"aria-hidden":"true"}})])])])]),_v(" "),_m(0)],1),_v(" "),_c('div',{attrs:{"id":"flex-body"}},[_c('overlay-source',{staticClass:"fixed-header-padding",attrs:{"id":"site-nav","tag-name":"nav","to":"site-nav"}},[_c('div',{staticClass:"site-nav-top"},[_c('div',{staticClass:"font-weight-bold mb-2",staticStyle:{"font-size":"1.25rem"}},[_c('span',[_c('strong',[_c('strong',[_v("USER GUIDE")])])])])]),_v(" "),_c('div',{staticClass:"nav-component slim-scroll"},[_c('div',[_c('site-nav',[_c('overlay-source',{staticClass:"site-nav-list site-nav-list-root",attrs:{"tag-name":"ul","to":"mb-site-nav"}},[_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/index.html"}},[_c('strong',[_v("Overview")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/generatingReports.html"}},[_c('strong',[_v("Generating reports")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/usingReports.html"}},[_c('strong',[_v("Using reports")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/customizingReports.html"}},[_c('strong',[_v("Customizing reports")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/sharingReports.html"}},[_c('strong',[_v("Sharing reports")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('strong',[_v("Appendices")]),_v(" "),_c('div',{staticClass:"site-nav-dropdown-btn-container"},[_c('i',{staticClass:"site-nav-dropdown-btn-icon site-nav-rotate-icon",attrs:{"onclick":"handleSiteNavClick(this.parentNode.parentNode, false); event.stopPropagation();"}},[_c('span',{staticClass:"glyphicon glyphicon-menu-down",attrs:{"aria-hidden":"true"}})])])]),_c('ul',{staticClass:"site-nav-dropdown-container site-nav-dropdown-container-open site-nav-list"},[_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/cli.html"}},[_v("CLI syntax reference")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/configFiles.html"}},[_v("Config files format")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/authorConfigSyntax.html"}},[_v("Advanced syntax: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/usingAuthorTags.html"}},[_v("Using "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("@@author")]),_v(" tags")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/withNetlify.html"}},[_v("RepoSense with Netlify")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/withGithubActions.html"}},[_v("RepoSense with GitHub Actions")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/withTravis.html"}},[_v("RepoSense with Travis")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/runSh.html"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("run.sh")]),_v(" format")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/faq.html"}},[_v("FAQ")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/troubleshooting.html"}},[_v("Troubleshooting")])])])])])])],1)],1)])]),_v(" "),_c('div',{staticClass:"fixed-header-padding",attrs:{"id":"content-wrapper"}},[_m(1),_v(" "),_m(2),_v(" "),_c('p',[_v("The sections below explain various ways of sharing a RepoSense report.")]),_v(" "),_m(3),_v(" "),_m(4),_v(" "),_m(5),_v(" "),_m(6),_v(" "),_m(7),_v(" "),_c('div',{staticClass:"indented-level0"},[_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('span',[_c('span',{staticClass:"glyphicon glyphicon-log-in",attrs:{"aria-hidden":"true"}})]),_v(" Appendix: "),_c('strong',[_v("Using RepoSense with GitHub Actions")])])]},proxy:true}])},[_v(" "),_c('div',[_c('h1',{staticClass:"display-4",attrs:{"id":"appendix-reposense-with-github-actions"}},[_c('span',[_v("Appendix: RepoSense with GitHub Actions")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#appendix-reposense-with-github-actions","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{attrs:{"id":"section-setting-up"}},[_c('div',{staticClass:"lead"},[_c('p',[_v("You can use "),_c('a',{attrs:{"href":"https://github.com/features/actions"}},[_c('em',[_v("GitHub Actions")])]),_v(" (together with other GitHub tools) to automate the generating and publishing of RepoSense reports.")])]),_v(" "),_c('h2',{attrs:{"id":"setting-up"}},[_v("Setting up"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#setting-up","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',[_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("The instructions below assume you are using GitHub pages to host your report.")])]),_v(" "),_c('p',[_c('span',{staticClass:"badge bg-dark bigger-level0"},[_v("Step 1")]),_v(" "),_c('strong',[_v("Fork the "),_c('em',[_v("publish-RepoSense")]),_v(" repository")]),_v(" using this "),_c('a',{attrs:{"href":"https://github.com/RepoSense/publish-RepoSense/fork"}},[_v("link")]),_v(". Optionally, you can rename the fork to match your RepoSense report e.g., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("project-code-dashboard")]),_v(".")])],1),_v(" "),_c('p',[_c('span',{staticClass:"badge bg-dark bigger-level0"},[_v("Step 2")]),_v(" "),_c('strong',[_v("Activate GitHub Actions on the forked repository:")])]),_v(" "),_c('ol',[_c('li',[_v("Go to the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Actions")]),_v(" page of your fork of the "),_c('a',{attrs:{"href":"https://github.com/reposense/publish-RepoSense"}},[_v("publish-RepoSense")]),_v(" repo.")]),_v(" "),_c('li',[_v("Click on the green button that says "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("I understand my workflows, go ahead and enable them")]),_v(" to enable GitHub Actions on your new repository.")])]),_v(" "),_c('p',[_c('span',{staticClass:"badge bg-dark bigger-level0"},[_v("Step 3")]),_v(" "),_c('strong',[_v("Update report configuration:")])]),_v(" "),_c('div',[_c('p',[_v("In your fork, edit "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("run.sh")]),_v(" (and if applicable, "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("group-config.csv")]),_v(") to customize the command line parameters or repositories to be analyzed.")]),_v(" "),_c('div',{staticClass:"indented-level0"},[_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('span',[_c('span',{staticClass:"glyphicon glyphicon-log-in",attrs:{"aria-hidden":"true"}})]),_v(" Appendix: "),_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("run.sh")]),_v(" format")])])]},proxy:true}])},[_v(" "),_c('div',[_c('h1',{staticClass:"display-4",attrs:{"id":"appendix-run-sh-format"}},[_c('span',[_v("Appendix: run.sh format")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#appendix-run-sh-format","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{staticClass:"lead"},[_c('p',[_c('a',{attrs:{"href":"https://github.com/reposense/publish-RepoSense/blob/master/run.sh"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("run.sh")])]),_v(" is a script used for automating RepoSense report generation.")])]),_v(" "),_c('h3',{attrs:{"id":"customizing-the-reposense-command"}},[_v("Customizing the RepoSense command"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#customizing-the-reposense-command","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("You can update the RepoSense command (i.e., the last line) in the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("run.sh")]),_v(" to match your needs.")]),_v(" "),_c('div',{staticClass:"indented-level0"},[_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('span',[_c('span',{staticClass:"glyphicon glyphicon-log-in",attrs:{"aria-hidden":"true"}})]),_v(" Appendix: "),_c('strong',[_v("CLI syntax reference")])])]},proxy:true}])},[_v(" "),_c('div',[_c('h1',{staticClass:"display-4",attrs:{"id":"appendix-cli-syntax-reference"}},[_c('span',[_v("Appendix: CLI syntax reference")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#appendix-cli-syntax-reference","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{staticClass:"lead"},[_c('p',[_v("The command "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar")]),_v(" takes several flags.")])]),_v(" "),_c('box',[_c('p',[_c('strong',[_v("Examples")]),_v(":")]),_v(" "),_c('p',[_v("An example of a command using most parameters:"),_c('br'),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar --repos https://github.com/reposense/RepoSense.git --output ./report_folder --since 31/1/2017 --until 31/12/2018 --formats java adoc xml --view --ignore-standalone-config --last-modified-date --timezone UTC+08 --find-previous-authors --analyze-authorship --originality-threshold 0.66")])]),_v(" "),_c('p',[_v("Same command as above but using most parameters in alias format:"),_c('br'),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar -r https://github.com/reposense/RepoSense.git -o ./report_folder -s 31/1/2017 -u 31/12/2018 -f java adoc xml -v -i -l -t UTC+08 -F -A -ot 0.66")])])]),_v(" "),_c('p',[_v("The section below provides explanations for each of the flags.")]),_v(" "),_c('h3',{attrs:{"id":"analyze-authorship-a"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--analyze-authorship")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-A")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#analyze-authorship-a","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--analyze-authorship")])]),_v(": Performs further analysis to distinguish between partial and full credit attribution for\nlines of code assigned to the author.")]),_v(" "),_c('ul',[_c('li',[_v("Default: this feature is turned "),_c('em',[_c('strong',[_v("off")])]),_v(" by default and the author will receive partial credits for all lines of\ncode, as the code lines are at least partial credit but may not qualify for full credit.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-A")]),_v(" (upper case)")]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--analyze-authorship")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-A")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("A darker background colour represents full credit, while a lighter background colour represents partial credit.")]),_v(" "),_c('p',[_v("If the code is attributed to a different author by the user via "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("@@author")]),_v(" tag, then the new author will be given\npartial credit.")])]),_v(" "),_c('h3',{attrs:{"id":"assets-a"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--assets")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-a")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#assets-a","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{attrs:{"id":"section-assets"}},[_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--assets ASSETS_DIRECTORY")])]),_v(": Specifies where to place assets for report generation.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ASSETS_DIRECTORY")]),_v(" The directory containing the assets files. A "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("favicon.ico")]),_v(" file can be placed here to customize the favicon of the dashboard, while a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("title.md")]),_v(" file can be placed to customize the "),_c('a',{attrs:{"href":"https://reposense.org/ug/customizingReports.html#add-a-title"}},[_v("title")]),_v(" of the report using "),_c('a',{attrs:{"href":"https://www.markdownguide.org/basic-syntax/"}},[_v("Markdown syntax")]),_v(".")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-a")])]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--assets ./assets")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-a ./assets")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("If "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--assets")]),_v(" is not specified, RepoSense looks for assets in the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./assets")]),_v(" directory.")])])])],1),_v(" "),_c('h3',{attrs:{"id":"config-c"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--config")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-c")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#config-c","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{attrs:{"id":"section-config"}},[_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--config CONFIG_DIRECTORY")])]),_v(": Specifies that config files located in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("CONFIG_DIRECTORY")]),_v(" should be used to customize the report.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("CONFIG_DIRECTORY")]),_v(" The directory containing the config files. Should contain a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(" file. Optionally, can contain an "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(" file or/and a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("group-config.csv")]),_v(" file or/and a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("report-config.json")]),_v(" file or/and a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("blurbs.md")]),_v(" file.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-c")])]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar --config ./config")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("Cannot be used with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repos")]),_v(". The "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repos")]),_v(" flag will take precedence over this flag.")]),_v(" "),_c('li',[_v("If both "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repos")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--config")]),_v(" are not specified, RepoSense looks for config files in the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./config")]),_v(" directory.")]),_v(" "),_c('li',[_v("Config files must follow "),_c('a',{attrs:{"href":"/RepoSense/ug/configFiles.html"}},[_v("this")]),_v(" format.")])])])],1),_v(" "),_c('h3',{attrs:{"id":"formats-f"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--formats")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-f")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#formats-f","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--formats LIST_OF_FORMATS")])]),_v(": Specifies which file extensions to be included in the analysis.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("LIST_OF_FORMATS")]),_v(" A space-separated list of file extensions that should be included in the analysis."),_c('br'),_v("\nDefault: all file formats")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-f")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--formats css fxml gradle")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-f css fxml gradle")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Binary file formats, such as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("jpg")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("png")]),_v(","),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("exe")]),_v(","),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("zip")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("rar")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("docx")]),_v(", and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("pptx")]),_v(", all will be labelled as the file type "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("binary")]),_v(" in the generated report.")])]),_v(" "),_c('h3',{attrs:{"id":"find-previous-authors-f"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--find-previous-authors")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-F")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#find-previous-authors-f","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--find-previous-authors")])]),_v(": Utilizes Git blame's ignore revisions functionality, RepoSense will attempt to blame the line changes caused by commits in the ignore commit list to the previous authors who altered those lines (if available).")]),_v(" "),_c('ul',[_c('li',[_v("Default: RepoSense will assume that no authors are responsible for the code changes in the lines altered by commits in the ignore commit list.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-F")]),_v(" (uppercase F)")]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--find-previous-authors")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-F")])])]),_v(" "),_c('h3',{attrs:{"id":"help-h"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--help")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-h")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#help-h","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--help")])]),_v(": Shows the help message.")]),_v(" "),_c('ul',[_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-h")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Cannot be used with any other flags. This flag takes precedence over all other flags.")])]),_v(" "),_c('h3',{attrs:{"id":"ignore-standalone-config-i"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--ignore-standalone-config")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-i")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#ignore-standalone-config-i","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--ignore-standalone-config")])]),_v(": Specifies that the standalone config file in the repo should be ignored.")]),_v(" "),_c('ul',[_c('li',[_v("Default: the standalone config file is not ignored")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-i")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--ignore-standalone-config")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-i")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("This flag overrides the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Ignore standalone config")]),_v(" field in the CSV config file.")])]),_v(" "),_c('h3',{attrs:{"id":"ignore-filesize-limit-i"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--ignore-filesize-limit")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-I")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#ignore-filesize-limit-i","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--ignore-filesize-limit")])]),_v(": Specifies that the file size limit (both default and user-defined) should be ignored during the analysis.")]),_v(" "),_c('ul',[_c('li',[_v("Default: the file size limit is not ignored")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-I")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--ignore-filesize-limit")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-I")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("All files are subject to a default file size limit or a custom size limit set by the user. Most files should not be\naffected by the default size limit. This flag can be useful for including files in your report that are affected by\nthe size limit. Note that this flag may result in large report sizes and/or slower report generation.")])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("This flag overrides the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Ignore file size limit")]),_v(" field in the CSV config file.")])]),_v(" "),_c('h3',{attrs:{"id":"last-modified-date-l"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--last-modified-date")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-l")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#last-modified-date-l","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--last-modified-date")])]),_v(": Specifies that the last modified date of each line of code should be added to "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("authorship.json")]),_v(".")]),_v(" "),_c('ul',[_c('li',[_v("Default: the last modified date of each line of code will not be added to "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("authorship.json")])]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-l")]),_v(" (lowercase L)")]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--last-modified-date")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-l")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("Cannot be used with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--shallow-cloning")]),_v(". This may result in an incorrect last modified date.")]),_v(" "),_c('li',[_v("The last modified dates will be in the same timezone specified with the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--timezone")]),_v(" flag.")])])]),_v(" "),_c('h3',{attrs:{"id":"originality-threshold-ot"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--originality-threshold")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-ot")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#originality-threshold-ot","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--originality-threshold [VALUE]")])]),_v(": Specifies the cut-off point for partial and full credit\nin "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--analyze-authorship")]),_v(". Author will be given full credit if their contribution exceeds this threshold, else partial\ncredit is given.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("VALUE")]),_v(" Optional. Acceptable range: [0.0, 1.0]."),_c('br'),_v("\nDefault: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("0.51")])]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-ot")])]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--originality-threshold 0.66")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-ot 0.66")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("Requires "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--analyze-authorship")]),_v(" flag.")]),_v(" "),_c('li',[_v("An author's contribution, or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("originality score")]),_v(", is calculated using Levenshtein Distance (Edit Distance) algorithm.\nWe compare the difference between current code line and its previous versions.")])])]),_v(" "),_c('h3',{attrs:{"id":"output-o"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--output")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-o")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#output-o","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--output OUTPUT_DIRECTORY")])]),_v(": Indicates where to save the report generated.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("OUTPUT_DIRECTORY")]),_v(" The location for the generated "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("reposense-report")]),_v(" folder."),_c('br'),_v("\nDefault: current directory")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-o")])]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--output ./foo")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-o ./foo")]),_v(" (the report will be in the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./foo/reposense-report")]),_v(" folder)")])]),_v(" "),_c('h3',{attrs:{"id":"period-p"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--period")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-p")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#period-p","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--period PERIOD")])]),_v(": Specifies the period of analysis window.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("PERIOD")]),_v(" The period of analysis window, in the format "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("nd")]),_v(" (for n days) or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("nw")]),_v(" (for n weeks). It is used to calculate end date if only start date is specified, or calculate end date if only start date is specified.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-p")])]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--period 30d")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--period 4w")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("If both start date and end date are not specified, the date of generating the report will be taken as the end date.")]),_v(" "),_c('li',[_v("May analyze the incorrect date range if used with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since d1")]),_v(". The program will throw a warning.")]),_v(" "),_c('li',[_v("Cannot be used with both "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--until")]),_v(". The program will throw an exception.")])])]),_v(" "),_c('h3',{attrs:{"id":"repo-repos-r"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repo")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repos")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-r")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#repo-repos-r","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repo REPO_LOCATION")])]),_v(": Specifies which repositories to analyze.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("REPO_LOCATION")]),_v(" A list of URLs or the disk location of the git repositories to analyze, separated by spaces.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-r")])]),_v(" "),_c('li',[_v("Examples:\n"),_c('ul',[_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repos https://github.com/reposense/RepoSense.git")])]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repo https://github.com/reposense/RepoSense.git c:/myRepose/foo/bar")]),_v(": analyzes the two specified repos (one remote, one local) and generates one report containing details of both.")])])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Cannot be used with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--config")]),_v(". This flag takes precedence over "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--config")]),_v(".")])]),_v(" "),_c('h3',{attrs:{"id":"shallow-cloning-s"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--shallow-cloning")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-S")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#shallow-cloning-s","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--shallow-cloning")])]),_v(": Clones repositories using Git's shallow cloning functionality, which can significantly reduce the time taken to clone large repositories. However, the flag should not be used for smaller repositories where the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(".git")]),_v(" file is smaller than 500 MB, as it would create overhead.")]),_v(" "),_c('ul',[_c('li',[_v("Default: RepoSense does not clone repositories using Git's shallow cloning functionality.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-S")]),_v(" (uppercase S)")]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--shallow-cloning")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-S")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Cannot be used with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--last-modified-date")]),_v(". This may result in an incorrect last modified date.")])]),_v(" "),_c('h3',{attrs:{"id":"since-s"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-s")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#since-s","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since START_DATE")])]),_v(": Specifies the start date for the period to be analyzed.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("START_DATE")]),_v(" The first day of the period to be analyzed, in the format "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("DD/MM/YYYY")]),_v("."),_c('br'),_v("\nDefault: one month before the current date")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-s")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since 21/10/2017")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-s 21/10/2017")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("If the start date is not specified, only commits made one month before the end date (if specified) or the date of generating the report, will be captured and analyzed.")]),_v(" "),_c('li',[_v("If "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("d1")]),_v(" is specified as the start date ("),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since d1")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-s d1")]),_v("), then the program will search for the earliest commit date of all repositories and use that as the start date.")]),_v(" "),_c('li',[_v("If "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("d1")]),_v(" is specified together with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--period")]),_v(", then the program will warn that the date range being analyzed may be incorrect.")])])]),_v(" "),_c('h3',{attrs:{"id":"timezone-t"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--timezone")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-t")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#timezone-t","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--timezone ZONE_ID")])]),_v(": Indicates the timezone to be used for the analysis.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ZONE_ID")]),_v(" The timezone in the format "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ZONE_ID[±hh[mm]]")]),_v("."),_c('br'),_v("\nDefault: system's default timezone")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-t")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--timezone UTC+08")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-t UTC-1030")])])]),_v(" "),_c('h3',{attrs:{"id":"until-u"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--until")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-u")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#until-u","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--until END_DATE")])]),_v(": Specifies the end date of the analysis period.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("END_DATE")]),_v(" The last date of the period to be analyzed, in the format "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("DD/MM/YYYY")]),_v("."),_c('br'),_v("\nDefault: current date")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-u")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--until 21/10/2017")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-u 21/10/2017")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Note: If the end date is not specified, the date of generating the report will be taken as the end date.")])]),_v(" "),_c('h3',{attrs:{"id":"version-v"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--version")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-V")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#version-v","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--version")])]),_v(": Shows the version of RepoSense.")]),_v(" "),_c('ul',[_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-V")]),_v(" (upper case)")])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Cannot be used with any other flags. This flag takes precedence over all other flags other than "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--help")]),_v(".")])]),_v(" "),_c('h3',{attrs:{"id":"view-v"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--view")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-v")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#view-v","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--view [REPORT_FOLDER]")])]),_v(": Specifies that the report should be opened in the default browser.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("REPORT_FOLDER")]),_v(" Optional. If specified, no analysis will be performed and the report specified by the argument will be opened."),_c('br'),_v("\nDefault: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./reposense-report")])]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-v")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--view")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-v")])])])],1)])],1),_v(" "),_c('p'),_v(" "),_c('h3',{attrs:{"id":"specifying-which-version-of-reposense-to-use"}},[_v("Specifying which version of RepoSense to use"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#specifying-which-version-of-reposense-to-use","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Depending on which version you wish to use for report generation, add one of the following flags to the line "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./get-reposense.py")]),_v(" in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("run.sh")]),_v(" (e.g., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./get-reposense.py --release")]),_v("):")]),_v(" "),_c('ul',[_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--release")]),_v(": Use the latest release (Stable)")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--master")]),_v(": Use the latest version of the master branch")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--tag TAG")]),_v(" (e.g. "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--tag v1.6.1")]),_v("): Use the version identified by the Git tag given")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--commit COMMIT")]),_v(" (e.g. "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--commit abc123")]),_v("): Use the version identified by the Git commit SHA given")])])])])],1),_v(" "),_c('p'),_v(" "),_c('div',{staticClass:"indented-level0"},[_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('span',[_c('span',{staticClass:"glyphicon glyphicon-log-in",attrs:{"aria-hidden":"true"}})]),_v(" Appendix: "),_c('strong',[_v("Config files format")])])]},proxy:true}])},[_v(" "),_c('div',[_c('h1',{staticClass:"display-4",attrs:{"id":"appendix-config-files-format"}},[_c('span',[_v("Appendix: Config files format")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#appendix-config-files-format","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{staticClass:"lead"},[_c('p',[_v("Given below are the details of the various config files used by RepoSense.")])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_c('strong',[_v("RepoSense ignores the order of column headers in the CSV config files. However, the spelling of the column headers must match the specified headers exactly, or the column would be ignored by RepoSense.")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_c('strong',[_v("A value in a config file is optional to provide unless it is specified as "),_c('span',{staticClass:"badge bg-danger"},[_v("mandatory")])]),_v(".")])]),_v(" "),_c('h2',{attrs:{"id":"repo-config-csv"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#repo-config-csv","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(" file contains repo-level config data.")]),_v(" Each row represents a repository's configuration ("),_c('a',{attrs:{"href":"/RepoSense/ug/repo-config.csv"}},[_v("example")]),_v(").")]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Column Name")]),_v(" "),_c('th',[_v("Explanation")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_v("Repository's Location "),_c('span',{staticClass:"badge bg-danger"},[_v("mandatory")])]),_v(" "),_c('td',[_v("The "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Remote Repo URL")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Disk Path")]),_v(" to the git repository e.g., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://github.com/foo/bar.git")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("C:\\Users\\user\\Desktop\\GitHub\\foo\\bar")])])]),_v(" "),_c('tr',[_c('td',[_v("Branch")]),_v(" "),_c('td',[_v("The branch to analyze in the target repository e.g., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("master")]),_v(". Default: the default branch of the repo")])]),_v(" "),_c('tr',[_c('td',[_v("File formats"),_c('sup',[_v("*+")])]),_v(" "),_c('td',[_v("The file extensions to analyze. Binary file formats, such as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("png")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("jpg")]),_v(", will be automatically labelled as the file type "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("binary")]),_v(" in the generated report. Default: all file formats")])]),_v(" "),_c('tr',[_c('td',[_v("Find Previous Authors")]),_v(" "),_c('td',[_v("Enter "),_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("yes")])]),_v(" to utilize Git blame's ignore revisions functionality, RepoSense will attempt to blame the line changes caused by commits in the ignore commit list to the previous authors who altered those lines (if available).")])]),_v(" "),_c('tr',[_c('td',[_v("Ignore Glob List"),_c('sup',[_v("*+")])]),_v(" "),_c('td',[_v("The list of file path globs to ignore during analysis for each author e.g., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("test/**;temp/**")]),_v(". Refer to the "),_c('a',{attrs:{"href":"https://docs.oracle.com/javase/tutorial/essential/io/fileOps.html#glob"}},[_c('em',[_v("glob format")])]),_v(" for the path glob syntax.")])]),_v(" "),_c('tr',[_c('td',[_v("Ignore standalone config")]),_v(" "),_c('td',[_v("To ignore the standalone config file (if any) in target repository, enter "),_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("yes")])]),_v(". If the cell is empty, the standalone config file in the repo (if any) will take precedence over configurations provided in the csv files.")])]),_v(" "),_c('tr',[_c('td',[_v("Ignore Commits List"),_c('sup',[_v("*+")])]),_v(" "),_c('td',[_v("The list of commits to ignore during analysis. For accurate results, the commits should be provided with their full hash. Additionally, a range of commits can be specified using the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("..")]),_v(" notation e.g. "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("abc123..def456")]),_v(" (both inclusive).")])]),_v(" "),_c('tr',[_c('td',[_v("Ignore Authors List"),_c('sup',[_v("*+")])]),_v(" "),_c('td',[_v("The list of authors to ignore during analysis. Authors should be specified by their "),_c('a',{attrs:{"href":"#a-note-about-git-author-name"}},[_v("Git Author Name")]),_v(".")])]),_v(" "),_c('tr',[_c('td',[_v("Shallow Cloning")]),_v(" "),_c('td',[_v("Enter "),_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("yes")])]),_v(" to clone the repository using Git's shallow cloning functionality. This option can significantly reduce the time taken to clone large repositories. However, the option should ideally be disabled for smaller repositories where the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(".git")]),_v(" file is smaller than 500 MB, as it would create overhead.")])]),_v(" "),_c('tr',[_c('td',[_v("File Size Limit"),_c('sup',[_v("+")])]),_v(" "),_c('td',[_v("Enter a file size limit for the repository in bytes as a single number without units (for a size limit of 1MB for example, enter 1000000). This file size limit will override the default file size limit (500KB). Files exceeding the file size limit will be marked as ignored and only the file name and line count will be reflected in the report.")])]),_v(" "),_c('tr',[_c('td',[_v("Ignore File Size Limit")]),_v(" "),_c('td',[_v("Enter "),_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("yes")])]),_v(" to ignore both the default file size limit and the file size limit possibly set by the user in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(".")])]),_v(" "),_c('tr',[_c('td',[_v("Skip Ignored File Analysis")]),_v(" "),_c('td',[_v("Enter "),_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("yes")])]),_v(" to ignore analysis of files exceeding the file size limit entirely. If file analysis is skipped, all information about the file will be omitted from the generated report. This option can significantly improve report generation time.")])])])])]),_c('box',{attrs:{"type":"info","seamless":""}},[_v("\nThe Shallow Cloning option is incompatible with the \"--last-modified-date\" CLI flag.\n")]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_v("\nIf Ignore File Size Limit is yes, the File Size Limit and Skip Ignored File Analysis columns are ignored.\n")]),_v(" "),_c('p',[_c('sup',[_v("* "),_c('strong',[_v("Multi-value column")]),_v(": multiple values can be entered in this column using a semicolon "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(";")]),_v(" as the separator.")]),_c('br'),_v(" "),_c('sup',[_v("+ "),_c('strong',[_v("Overrideable column")]),_v(": prepend with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("override:")]),_v(" to use entered value(s) instead of value(s) from standalone config.")])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("When using "),_c('a',{attrs:{"href":"#config-json-standalone-config-file"}},[_v("standalone config")]),_v(" (if it is not ignored), it is possible to override specific values from the standalone config by prepending the entered value with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("override:")]),_v(".")])]),_v(" "),_c('h2',{attrs:{"id":"author-config-csv"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#author-config-csv","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Optionally, you can use an "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(" (which should be in the same directory as the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(" file) to provide more details about the authors to analyze ("),_c('a',{attrs:{"href":"/RepoSense/ug/author-config.csv"}},[_v("example")]),_v("). It should contain the following columns:")]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Column Name")]),_v(" "),_c('th',[_v("Explanation")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_v("Repository's Location"),_c('sup',[_v("*")])]),_v(" "),_c('td',[_v("Same as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(". Default: all the repos in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(".")])]),_v(" "),_c('tr',[_c('td',[_v("Branch")]),_v(" "),_c('td',[_v("The branch to analyze for this author, e.g., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("master")]),_v(". Default: the author will be bound to all the repos in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(" that has the same repo's location, regardless of branch.")])]),_v(" "),_c('tr',[_c('td',[_v("Author's Git Host ID"),_c('sup',[_v("#")]),_v(" "),_c('span',{staticClass:"badge bg-danger"},[_v("mandatory")])]),_v(" "),_c('td',[_v("Username of the target author's profile on GitHub, GitLab or Bitbucket, e.g."),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("JohnDoe")]),_v(".")])]),_v(" "),_c('tr',[_c('td',[_v("Author's Emails"),_c('sup',[_v("*")])]),_v(" "),_c('td',[_v("Associated emails of the author. For GitHub users, this can be found in your "),_c('a',{attrs:{"href":"https://github.com/settings/emails"}},[_v("GitHub settings")]),_v(".")])]),_v(" "),_c('tr',[_c('td',[_v("Author's Display Name")]),_v(" "),_c('td',[_v("The name to display for the author. Default: author's username.")])]),_v(" "),_c('tr',[_c('td',[_v("Author's Git Author Name"),_c('sup',[_v("*")])]),_v(" "),_c('td',[_v("The meaning of "),_c('em',[_v("Git Author Name")]),_v(" is explained in "),_c('a',{attrs:{"href":"#a-note-about-git-author-name"}},[_c('em',[_v("A note about git author name")])]),_v(".")])]),_v(" "),_c('tr',[_c('td',[_v("Ignore Glob List"),_c('sup',[_v("*")])]),_v(" "),_c('td',[_v("Files to ignore for this author, in addition to files ignored by the patterns specified in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(". The path glob syntax is the same as that of Ignore Glob List in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(".")])])])])]),_c('p',[_c('sup',[_v("* "),_c('strong',[_v("Multi-value column")]),_v(": multiple values can be entered in this column using a semicolon "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(";")]),_v(" as the separator.")]),_v(" "),_c('br'),_v(" "),_c('sup',[_v("# For backward compatibility, "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Author's GitHub ID")]),_v(" is still accepted as the header in place of "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Author's Git Host ID")]),_v(".")])]),_v(" "),_c('p',[_v("If "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(" is not given and the repo has not provided author details in a standalone config file, all the authors of the repositories within the date range specified (if any) will be analyzed.")]),_v(" "),_c('p',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(" has some advanced syntax that can help to reduce duplication of the author's information. The syntax guide is given below:")]),_v(" "),_c('div',{staticClass:"indented-level0"},[_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('span',[_c('span',{staticClass:"glyphicon glyphicon-log-in",attrs:{"aria-hidden":"true"}})]),_v(" Appendix: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(" advanced syntax")])]},proxy:true}])},[_v(" "),_c('div',[_c('h1',{staticClass:"display-4",attrs:{"id":"appendix-author-config-csv-advanced-syntax"}},[_c('span',[_v("Appendix: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(" advanced syntax")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#appendix-author-config-csv-advanced-syntax","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{staticClass:"lead"},[_c('p',[_v("Given below are the advanced syntax available for "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(".")])]),_v(" "),_c('h2',{attrs:{"id":"multiple-repository-s-location-per-author"}},[_v("Multiple "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repository's Location")]),_v(" per author"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#multiple-repository-s-location-per-author","onclick":"event.stopPropagation()"}})]),_v(" "),_c('h4',{attrs:{"id":"specifying-multiple-repository-s-location"}},[_v("Specifying multiple "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repository's Location")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#specifying-multiple-repository-s-location","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("To specify multiple "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repository's Location")]),_v(" in a single row, we can use a semicolon "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(";")]),_v(" as a separator.")]),_v(" "),_c('p',[_v("Below is an example:")]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Repository's Location")]),_v(" "),_c('th',[_v("Branch")]),_v(" "),_c('th',[_v("Author's Git Host ID")]),_v(" "),_c('th',[_v("... Hidden columns")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://github.com/reposense/RepoSense.git;https://github.com/MarkBind/markbind.git")])]),_v(" "),_c('td',[_v("master")]),_v(" "),_c('td',[_v("sikai00")]),_v(" "),_c('td',[_v("--")])])])])]),_c('p',[_v("We have now furnished author details for both repositories in a single row, instead of having two individual rows per "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repository's Location")]),_v(".")]),_v(" "),_c('br'),_v(" "),_c('h4',{attrs:{"id":"specifying-repository-s-location-with-one-or-more-specific-branches"}},[_v("Specifying "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repository's Location")]),_v(" with one or more specific branches"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#specifying-repository-s-location-with-one-or-more-specific-branches","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("To list out one or more branches for a particular "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repository's Location")]),_v(", we can use a pipe "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("|")]),_v(" separator to demarcate the different branches.")]),_v(" "),_c('p',[_v("Below is an example:")]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Repository's Location")]),_v(" "),_c('th',[_v("Branch")]),_v(" "),_c('th',[_v("Author's Git Host ID")]),_v(" "),_c('th',[_v("... Hidden columns")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://github.com/reposense/RepoSense.git~master|release|cypress")])]),_v(" "),_c('td',[_v("master")]),_v(" "),_c('td',[_v("sikai00")]),_v(" "),_c('td',[_v("--")])])])])]),_c('p',[_v("We have now provided author details for three different branches in a single repo, using a single row.")]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("The branch specified through the delimiter syntax will take precedence over the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Branch")]),_v(" column.")])]),_v(" "),_c('h2',{attrs:{"id":"using-github-branch-url-as-repository-s-location"}},[_v("Using GitHub branch URL as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repository's Location")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#using-github-branch-url-as-repository-s-location","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("We can also use GitHub branch URL as copied from the address bar directly, to be able to quickly use the URL to specify the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repository's Location")]),_v(" and a specific "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Branch")]),_v(" at the same time.")]),_v(" "),_c('p',[_v("Below is an example:")]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Repository's Location")]),_v(" "),_c('th',[_v("Branch")]),_v(" "),_c('th',[_v("Author's Git Host ID")]),_v(" "),_c('th',[_v("... Hidden columns")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://github.com/reposense/RepoSense/tree/release")])]),_v(" "),_c('td'),_v(" "),_c('td',[_v("sikai00")]),_v(" "),_c('td',[_v("--")])])])])]),_c('p',[_v("There is no need to specify the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Branch")]),_v(" column now, as we have specified it through the GitHub branch URL.")]),_v(" "),_c('box',{attrs:{"type":"warning","seamless":""}},[_c('p',[_v("GitLab and BitBucket branch URL are not supported at the moment.")])]),_v(" "),_c('h2',{attrs:{"id":"combining-the-advanced-syntax"}},[_v("Combining the advanced syntax"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#combining-the-advanced-syntax","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("It is possible to combine the above-mentioned advanced syntax. By doing so, we can go from:")]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Repository's Location")]),_v(" "),_c('th',[_v("Branch")]),_v(" "),_c('th',[_v("Author's Git Host ID")]),_v(" "),_c('th',[_v("... Hidden columns")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://github.com/MarkBind/markbind/tree/vue3-migration")])]),_v(" "),_c('td'),_v(" "),_c('td',[_v("sikai00")]),_v(" "),_c('td',[_v("--")])]),_v(" "),_c('tr',[_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://github.com/reposense/RepoSense.git")])]),_v(" "),_c('td',[_v("master")]),_v(" "),_c('td',[_v("sikai00")]),_v(" "),_c('td',[_v("--")])]),_v(" "),_c('tr',[_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://github.com/reposense/RepoSense.git")])]),_v(" "),_c('td',[_v("cypress")]),_v(" "),_c('td',[_v("sikai00")]),_v(" "),_c('td',[_v("--")])])])])]),_c('p',[_v("to:")]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Repository's Location")]),_v(" "),_c('th',[_v("Branch")]),_v(" "),_c('th',[_v("Author's Git Host ID")]),_v(" "),_c('th',[_v("... Hidden columns")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://github.com/MarkBind/markbind/tree/vue3-migration;https://github.com/reposense/RepoSense.git~master|cypress")])]),_v(" "),_c('td'),_v(" "),_c('td',[_v("sikai00")]),_v(" "),_c('td',[_v("--")])])])])]),_c('br')],1)])],1),_v(" "),_c('p'),_v(" "),_c('h2',{attrs:{"id":"group-config-csv"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("group-config.csv")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#group-config-csv","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Optionally, you can provide a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("group-config.csv")]),_v("(which should be in the same directory as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(" file) to provide details on any custom groupings for files in specified repositories ("),_c('a',{attrs:{"href":"/RepoSense/ug/group-config.csv"}},[_v("example")]),_v("). It should contain the following columns:")]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Column Name")]),_v(" "),_c('th',[_v("Explanation")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_v("Repository's Location")]),_v(" "),_c('td',[_v("Same as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(". Default: all the repos in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")])])]),_v(" "),_c('tr',[_c('td',[_v("Group Name "),_c('span',{staticClass:"badge bg-danger"},[_v("mandatory")])]),_v(" "),_c('td',[_v("Name of the group, e.g.,"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("test")]),_v(".")])]),_v(" "),_c('tr',[_c('td',[_v("Globs * "),_c('span',{staticClass:"badge bg-danger"},[_v("mandatory")])]),_v(" "),_c('td',[_v("The list of file path globs to include for specified group, e.g.,"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("**/test/*;**.java")]),_v(".")])])])])]),_c('p',[_c('sup',[_v("* "),_c('strong',[_v("Multi-value column")]),_v(": multiple values can be entered in this column using a semicolon "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(";")]),_v(" as the separator.")])]),_v(" "),_c('p',[_v("Note that a file in a given repository should only be tagged to one group. "),_c('br'),_v("\ne.g.: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("example.java")]),_v(" in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("example-repo")]),_v(" can either be in the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("test")]),_v(" group or the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("code")]),_v(" group, but not in both "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("test")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("code")]),_v(" group. If multiple groups are specified for a given file, the latter group (i.e., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("code")]),_v(" group) is set for the file.")]),_v(" "),_c('h2',{attrs:{"id":"report-config-json"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("report-config.json")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#report-config-json","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("You can optionally use "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("report-config.json")]),_v(" to customize report generation by providing the following information. ("),_c('a',{attrs:{"href":"/RepoSense/ug/report-config.json"}},[_v("example")]),_v(")")]),_v(" "),_c('p',[_c('strong',[_v("Fields to provide")]),_v(":")]),_v(" "),_c('ul',[_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("title")]),_v(": Title of the generated report, which is also the title of the deployed dashboard. Default: \"RepoSense Report\"")])]),_v(" "),_c('div',{attrs:{"id":"section-standalone"}},[_c('h2',{attrs:{"id":"config-json-standalone-config-file"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("config.json")]),_v(" (standalone config file)"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#config-json-standalone-config-file","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Repo owners can provide the following additional information to RepoSense using a config file that we call the "),_c('strong',[_c('em',[_v("standalone config file")])]),_v(":")]),_v(" "),_c('ul',[_c('li',[_v("which files/authors/commits to analyze/omit")]),_v(" "),_c('li',[_v("which git and git host usernames belong to which authors")]),_v(" "),_c('li',[_v("the display of an author")])]),_v(" "),_c('p',[_v("To use this feature, add a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("_reposense/config.json")]),_v(" to the root of your repo using the format in the example below ("),_c('a',{attrs:{"href":"https://github.com/reposense/RepoSense/blob/master/_reposense/config.json"}},[_v("another example")]),_v(") and "),_c('strong',[_v("commit it")]),_v(" (reason: RepoSense can see committed code only):")]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"no-line-numbers hljs json"}},[_c('span',[_v("{\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"ignoreGlobList\"")]),_v(": ["),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"about-us/**\"")]),_v(", "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"**index.html\"")]),_v("],\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"formats\"")]),_v(": ["),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"html\"")]),_v(", "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"css\"")]),_v("],\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"ignoreCommitList\"")]),_v(": ["),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"90018e49f129ce7e0abdc8b18e91c9813588c601\"")]),_v(", "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"67890def\"")]),_v(", "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"abc123..def456\"")]),_v("],\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"ignoreAuthorList\"")]),_v(": ["),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"charlie\"")]),_v("],\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"authors\"")]),_v(":\n")]),_c('span',[_v(" [\n")]),_c('span',[_v(" {\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"gitId\"")]),_v(": "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"alice\"")]),_v(",\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"emails\"")]),_v(": ["),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"alice@example.com\"")]),_v(", "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"alicet@example.com\"")]),_v("],\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"displayName\"")]),_v(": "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"Alice T.\"")]),_v(",\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"authorNames\"")]),_v(": ["),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"AT\"")]),_v(", "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"A\"")]),_v("],\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"ignoreGlobList\"")]),_v(": ["),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"**.css\"")]),_v("]\n")]),_c('span',[_v(" },\n")]),_c('span',[_v(" {\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"gitId\"")]),_v(": "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"bob\"")]),_v("\n")]),_c('span',[_v(" }\n")]),_c('span',[_v(" ]\n")]),_c('span',[_v("}\n")])])]),_c('p',[_v("Note: all fields are optional unless specified otherwise.")]),_v(" "),_c('p',[_c('strong',[_v("Fields to provide "),_c('em',[_v("repository-level")]),_v(" info")]),_v(":")]),_v(" "),_c('ul',[_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ignoreGlobList")]),_v(": Folders/files to ignore, specified using the "),_c('a',{attrs:{"href":"https://docs.oracle.com/javase/tutorial/essential/io/fileOps.html#glob"}},[_c('em',[_v("glob format")])]),_v(".")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("formats")]),_v(": File formats to analyze. Binary file formats, such as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("png")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("jpg")]),_v(", will be automatically labelled as the file type "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("binary")]),_v(" in the generated report. Default: all file formats")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ignoreCommitList")]),_v(": The list of commits to ignore during analysis. For accurate results, the commits should be provided with their full hash. Additionally, a range of commits can be specified using the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("..")]),_v(" notation e.g. "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("abc123..def456")]),_v(" (both inclusive).")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ignoreAuthorList")]),_v(": The list of authors to ignore during analysis. Authors specified in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("authors")]),_v(" field or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(" will be also be omitted if they are in this list. Authors should be specified by their "),_c('a',{attrs:{"href":"#a-note-about-git-author-name"}},[_v("Git Author Name")]),_v(".")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("fileSizeLimit")]),_v(": A file size limit for the repository in bytes as a single number without units, that will override the default file size limit. If not specified, the default file size limit will continue to be used.")])]),_v(" "),_c('p',[_c('strong',[_v("Fields to provide "),_c('em',[_v("author-level")]),_v(" info")]),_v(":"),_c('br'),_v("\nNote: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("authors")]),_v(" field should contain "),_c('em',[_v("all")]),_v(" authors that should be captured in the analysis.")]),_v(" "),_c('ul',[_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("gitId")]),_v(": Username of the author. "),_c('span',{staticClass:"badge bg-danger"},[_v("mandatory")]),_v(" field.")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("emails")]),_v(": Associated git emails of the author. For GitHub, this can be found in your "),_c('a',{attrs:{"href":"https://github.com/settings/emails"}},[_v("GitHub settings")]),_v(".")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("displayName")]),_v(": Name to display on the report for this author.")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("authorNames")]),_v(": Git Author Name(s) used in the author's commits. By default, RepoSense assumes an author would use their remote Git Host username as the Git username too. The meaning of "),_c('em',[_v("Git Author Name")]),_v(" is explained in "),_c('a',{attrs:{"href":"#a-note-about-git-author-name"}},[_c('em',[_v("A note about git author name")])]),_v(".")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ignoreGlobList")]),_v(": "),_c('em',[_v("Additional")]),_v(" (i.e. on top of the repo-level "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ignoreGlobList")]),_v(") folders/files to ignore for a specific author. The path glob syntax is specified by the "),_c('a',{attrs:{"href":"https://docs.oracle.com/javase/tutorial/essential/io/fileOps.html#glob"}},[_c('em',[_v("glob format")])]),_v(". In the example above, the actual "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ignoreGlobList")]),_v(" for "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("alice")]),_v(" would be "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("[\"about-us/**\", \"**index.html\", \"**.css\"]")]),_v(".")])]),_v(" "),_c('p',[_v("To verify your standalone configuration is as intended, add the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("_reposense/config.json")]),_v(" to your local copy of repo and run RepoSense against it as follows:"),_c('br')]),_v(" "),_c('ul',[_c('li',[_v("Format: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar --repo LOCAL_REPO_LOCATION")]),_v(" "),_c('br')]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar --repo c:/myRepose/foo/bar")]),_c('br'),_v("\nAfter that, view the report to see if the configuration you specified in the config file is being reflected correctly in the report.")])]),_v(" "),_c('h2',{attrs:{"id":"a-note-about-git-author-name"}},[_v("A note about git author name"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#a-note-about-git-author-name","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Git Author Name")]),_v(" refers to the customizable author's display name set in the local "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(".gitconfig")]),_v(" file. For example, in the Git Log's display:")]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"no-line-numbers hljs"}},[_c('span',[_v("...\n")]),_c('span',[_v("commit cd7f610e0becbdf331d5231887d8010a689f87c7\n")]),_c('span',[_v("Author: ConfiguredAuthorName \n")]),_c('span',[_v("Date: Fri Feb 9 19:14:41 2018 +0800\n")]),_c('span',[_v("\n")]),_c('span',[_v(" Make some changes to show my new author's name\n")]),_c('span',[_v("\n")]),_c('span',[_v("commit e3f699fd4ef128eebce98d5b4e5b3bb06a512f49\n")]),_c('span',[_v("Author: ActualGitHostId \n")]),_c('span',[_v("Date: Fri Feb 9 19:13:13 2018 +0800\n")]),_c('span',[_v("\n")]),_c('span',[_v(" Initial commit\n")]),_c('span',[_v(" ...\n")])])]),_c('p',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ActualGitHostId")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ConfiguredAuthorName")]),_v(" are both "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Git Author Name")]),_v(" of the same author."),_c('br'),_v("\nTo find the author name that you are currently using for your current git repository, run the following command within your git repository:")]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"no-line-numbers hljs"}},[_c('span',[_v("git config user.name\n")])])]),_c('p',[_v("To set the author name to the value you want (e.g., to set it to your GitHub username) for your current git repository, you can use the following command ("),_c('a',{attrs:{"href":"https://www.git-tower.com/learn/git/faq/change-author-name-email"}},[_v("more info")]),_v("):")]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"no-line-numbers hljs"}},[_c('span',[_v("git config user.name \"YOUR_AUTHOR_NAME”\n")])])]),_c('p',[_v("To set the author name to use a default value you want for future git repositories, you can use the following command:")]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"no-line-numbers hljs"}},[_c('span',[_v("git config --global user.name \"YOUR_AUTHOR_NAME”\n")])])]),_c('p',[_v("RepoSense expects the Git Author Name to be the same as author's username on the Git hosting platform (GitHub, GitLab, BitBucket). If an author's "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Git Author Name")]),_v(" is different from their username on the Git hosting platform, the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Git Author Name")]),_v(" needs to be specified in the standalone config file. If the author has more than one "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Git Author Name")]),_v(", multiple values can be entered too.")]),_v(" "),_c('box',{attrs:{"type":"warning","seamless":""}},[_c('p',[_v("Note: Symbols such as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("\"")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("!")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("/")]),_v(" etc. in your author name will be omitted, which may reduce the accuracy of the analysis if 2 names in the repository are approximately similar.")])])],1),_v(" "),_c('div',{attrs:{"id":"section-blurbs"}},[_c('h2',{attrs:{"id":"blurbs-md"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("blurbs.md")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#blurbs-md","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("You can optionally use "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("blurbs.md")]),_v(" to add blurbs in Markdown syntax for repository branches. These blurbs will be seen when grouping by "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repo/Branch")]),_v(". ("),_c('a',{attrs:{"href":"https://github.com/reposense/RepoSense/blob/master/docs/ug/blurbs.md"}},[_v("example")]),_v(")")]),_v(" "),_c('p',[_c('strong',[_v("Format")]),_v(":")]),_v(" "),_c('ul',[_c('li',[_v("First line in section: Link to the repository branch.")]),_v(" "),_c('li',[_v("Second line onwards: Blurb content.")]),_v(" "),_c('li',[_v("Delimiter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("")]),_v(". Everything on the line after the delimiter will be ignored.")])])])],1)])],1),_v(" "),_c('p')]),_v(" "),_c('p',[_c('span',{staticClass:"badge bg-dark bigger-level0"},[_v("Step 4")]),_v(" "),_c('strong',[_v("View the generated report:")])]),_v(" "),_c('p',[_v("To access your regenerated RepoSense report, go to the settings of your fork in GitHub, under "),_c('strong',[_v("GitHub Pages")]),_v(" section, look for "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Your site is published at [LINK]")]),_v(". It should look something like "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://[YOUR_GITHUB_ID].github.io/publish-RepoSense")]),_v(".\n"),_c('a',{attrs:{"href":"/RepoSense/images/publishingguide-githubsetting.jpg","target":"_self"}},[_c('img',{staticClass:"img-fluid",attrs:{"src":"/RepoSense/images/publishingguide-githubsetting.jpg","alt":"GitHub Setting","title":"GitHub Setting"}})])]),_v(" "),_c('box',{attrs:{"type":"tip","seamless":""}},[_c('p',[_v("There is also a published GitHub Action ("),_c('a',{attrs:{"href":"https://github.com/marketplace/actions/reposense-action"}},[_v("reposense-action")]),_v(") that can be used to generate and publish RepoSense reports. It is especially convenient for users who wish to skip the forking and setting up of a separate repository. For more information, refer to the "),_c('a',{attrs:{"href":"https://github.com/marketplace/actions/reposense-action#usage"}},[_v("usage description")]),_v(".")])])],1),_v(" "),_c('div',{attrs:{"id":"section-updating-the-report"}},[_c('h2',{attrs:{"id":"updating-the-report"}},[_v("Updating the report"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#updating-the-report","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_v("Manual:")])]),_v(" "),_c('ul',[_c('li',[_v("You can trigger GitHub to re-generate and re-deploy the report by pushing an empty commit to your fork.")]),_v(" "),_c('li',[_v("Currently, the GitHub Actions UI does not support the manual execution of workflows.")])]),_v(" "),_c('p',[_c('strong',[_v("Automated:")]),_v(" GitHub actions can be set to run periodically.")]),_v(" "),_c('ol',[_c('li',[_v("Edit the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(".github/workflows/main.yml")]),_v(" and uncomment the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("schedule:")]),_v(" section.")]),_v(" "),_c('li',[_v("You may change the expression after "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("cron:")]),_v(" to a schedule of your choice. Read more about cron syntax "),_c('a',{attrs:{"href":"https://help.github.com/en/actions/reference/events-that-trigger-workflows#scheduled-events-schedule"}},[_v("here")]),_v(".")]),_v(" "),_c('li',[_v("Commit your changes.")])])])])])],1),_v(" "),_c('p'),_v(" "),_c('div',{staticClass:"indented-level0"},[_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('span',[_c('span',{staticClass:"glyphicon glyphicon-log-in",attrs:{"aria-hidden":"true"}})]),_v(" Appendix: "),_c('strong',[_v("Using RepoSense with Travis")])])]},proxy:true}])},[_v(" "),_c('div',[_c('h1',{staticClass:"display-4",attrs:{"id":"appendix-reposense-with-travis"}},[_c('span',[_v("Appendix: RepoSense with Travis")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#appendix-reposense-with-travis","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{attrs:{"id":"section-setting-up"}},[_c('div',{staticClass:"lead"},[_c('p',[_v("You can use the CI tool Travis to automate generating and publishing of RepoSense reports.")])]),_v(" "),_c('h2',{attrs:{"id":"setting-up-2"}},[_v("Setting up"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#setting-up-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{attrs:{"id":"section-fork-token"}},[_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("The instructions below assume you are using GitHub pages to host your report.")])]),_v(" "),_c('p',[_c('span',{staticClass:"badge bg-dark bigger-level0"},[_v("Step 1")]),_v(" "),_c('strong',[_v("Fork the "),_c('em',[_v("publish-RepoSense")]),_v(" repository")]),_v(" using this "),_c('a',{attrs:{"href":"https://github.com/RepoSense/publish-RepoSense/fork"}},[_v("link")]),_v(". Optionally, you can rename the fork to match your RepoSense report e.g., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("project-code-dashboard")]),_v(".")])],1),_v(" "),_c('p',[_c('span',{staticClass:"badge bg-dark bigger-level0"},[_v("Step 2")]),_v(" "),_c('strong',[_v("Generate a "),_c('em',[_v("personal access token")]),_v(" or "),_c('em',[_v("deploy key")]),_v(" on GitHub")]),_v(" as explained in the panel below.")]),_v(" "),_c('div',{staticClass:"indented-level0"},[_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('span',[_c('span',{staticClass:"glyphicon glyphicon-log-in",attrs:{"aria-hidden":"true"}})]),_v(" Granting write access on GitHub")])]},proxy:true}])},[_v(" "),_c('div',[_c('h2',{attrs:{"id":"granting-write-access-to-a-repository"}},[_v("Granting write-access to a repository"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#granting-write-access-to-a-repository","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("We recommend using a "),_c('a',{attrs:{"href":"https://github.blog/2013-05-16-personal-api-tokens/"}},[_v("personal access token")]),_v(" if aiming for the ease of setup and "),_c('a',{attrs:{"href":"https://developer.github.com/v3/guides/managing-deploy-keys/#deploy-keys"}},[_v("deploy key")]),_v(" if aiming for enhanced security.")]),_v(" "),_c('h3',{attrs:{"id":"if-you-wish-to-use-personal-access-token"}},[_v("If you wish to use "),_c('em',[_v("personal access token")]),_v(":"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#if-you-wish-to-use-personal-access-token","onclick":"event.stopPropagation()"}})]),_v(" "),_c('ol',[_c('li',[_c('strong',[_v("Create a "),_c('em',[_v("personal access token")])]),_v(" by following this "),_c('a',{attrs:{"href":"https://help.github.com/articles/creating-a-personal-access-token-for-the-command-line/"}},[_v("guide")]),_v(" and give only "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("public_repo")]),_v(" permission.")]),_v(" "),_c('li',[_c('strong',[_v("Copy the token")]),_v(" for later use.")])]),_v(" "),_c('h3',{attrs:{"id":"if-you-wish-to-use-deploy-key"}},[_v("If you wish to use "),_c('em',[_v("deploy key")]),_v(":"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#if-you-wish-to-use-deploy-key","onclick":"event.stopPropagation()"}})]),_v(" "),_c('box',{attrs:{"type":"info"},scopedSlots:_u([{key:"icon",fn:function(){return [_c('span',{staticClass:"fab fa-windows",attrs:{"aria-hidden":"true"}})]},proxy:true}])},[_v(" "),_c('p',[_v("[Windows users] "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ssh-keygen")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("base64")]),_v(" are accessible using "),_c('a',{attrs:{"href":"https://gitforwindows.org/"}},[_v("Git Bash")]),_v(".")])]),_v(" "),_c('ol',[_c('li',[_c('strong',[_v("Create a public-private key pair")]),_v(" (without a passphrase) using the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ssh-keygen")]),_v(". "),_c('br'),_v("\ni.e., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ssh-keygen -t ecdsa -b 521 -f id_reposense -q -N \"\"")])]),_v(" "),_c('li',[_c('strong',[_v("Create a deploy key")]),_v(" as follows:\n"),_c('ol',[_c('li',[_v("Go to the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("settings")]),_v(" page of your publish-RepoSense fork")]),_v(" "),_c('li',[_v("Click on the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Deploy keys")]),_v(" item in the navigation menu in that page")]),_v(" "),_c('li',[_v("Click on the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Add deploy key")]),_v(" button and create a new deploy key with the contents of "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("id_reposense.pub")]),_v(".")])])]),_v(" "),_c('li',[_c('strong',[_v("Copy the private key")]),_v(" in base64 encoded format for later use. "),_c('br'),_v("\ni.e., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("cat id_reposense | base64 -w 0")])])])],1)])],1),_v(" "),_c('p'),_v(" "),_c('p',[_c('span',{staticClass:"badge bg-dark bigger-level0"},[_v("Step 3")]),_v(" "),_c('strong',[_v("Login to "),_c('a',{attrs:{"href":"https://travis-ci.org/"}},[_v("Travis-CI")]),_v(".")]),_v(" You may have to sign up first.")]),_v(" "),_c('p',[_c('span',{staticClass:"badge bg-dark bigger-level0"},[_v("Step 4")]),_v(" "),_c('strong',[_v("Sync your Travis account with GitHub:")])]),_v(" "),_c('ol',[_c('li',[_v("Go to "),_c('a',{attrs:{"href":"https://travis-ci.org/account/repositories"}},[_v("your account")]),_v(".")]),_v(" "),_c('li',[_v("Click on "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Sync account")]),_v(" to fetch all your repositories into Travis-CI.")])]),_v(" "),_c('p',[_c('span',{staticClass:"badge bg-dark bigger-level0"},[_v("Step 5")]),_v(" "),_c('strong',[_v("Activate the repository:")])]),_v(" "),_c('ol',[_c('li',[_v("Go to your "),_c('a',{attrs:{"href":"https://travis-ci.org/search/publish-RepoSense/"}},[_v("publish-RepoSense fork in Travis-CI")])]),_v(" "),_c('li',[_v("Under "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Current")]),_v(" tab, click on "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Activate repository")]),_v(".")])]),_v(" "),_c('p',[_c('span',{staticClass:"badge bg-dark bigger-level0"},[_v("Step 6")]),_v(" "),_c('strong',[_v("Set the token/key:")])]),_v(" "),_c('ol',[_c('li',[_v("In the same page, click on "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("More options")]),_v(" on the right.")]),_v(" "),_c('li',[_v("Then, click on the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Settings")]),_v(" option:"),_c('br'),_v(" "),_c('a',{attrs:{"href":"/RepoSense/images/publishingguide-travissetting.jpg","target":"_self"}},[_c('img',{staticClass:"img-fluid",attrs:{"src":"/RepoSense/images/publishingguide-travissetting.jpg","alt":"Travis-CI Dashboard","title":"Travis-CI Dashboard"}})])]),_v(" "),_c('li',[_v("Under "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Environment Variables")]),_v(", name a variable as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("GITHUB_TOKEN")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("GITHUB_DEPLOY_KEY")]),_v(" depending on your earlier choice and paste the token/key into its value field; then click "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Add")]),_v(".")]),_v(" "),_c('li',[_v("Ensure that the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Display value in build log")]),_v(" is "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("switched off")]),_v(" for security reasons:"),_c('br'),_v(" "),_c('a',{attrs:{"href":"/RepoSense/images/publishingguide-githubtoken.jpg","target":"_self"}},[_c('img',{staticClass:"img-fluid",attrs:{"src":"/RepoSense/images/publishingguide-githubtoken.jpg","alt":"Travis-CI Environment Variable","title":"Travis-CI Environment Variable"}})])])]),_v(" "),_c('p',[_c('span',{staticClass:"badge bg-dark bigger-level0"},[_v("Step 7")]),_v(" "),_c('strong',[_v("Update the report configuration:")])]),_v(" "),_c('span',{attrs:{"id":"section-edit-configs"}},[_c('p',[_v("In your fork, edit "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("run.sh")]),_v(" (and if applicable, "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("group-config.csv")]),_v(") to customize the command line parameters or repositories to be analyzed.")]),_v(" "),_c('div',{staticClass:"indented-level0"},[_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('span',[_c('span',{staticClass:"glyphicon glyphicon-log-in",attrs:{"aria-hidden":"true"}})]),_v(" Appendix: "),_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("run.sh")]),_v(" format")])])]},proxy:true}])},[_v(" "),_c('div',[_c('h1',{staticClass:"display-4",attrs:{"id":"appendix-run-sh-format-2"}},[_c('span',[_v("Appendix: run.sh format")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#appendix-run-sh-format-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{staticClass:"lead"},[_c('p',[_c('a',{attrs:{"href":"https://github.com/reposense/publish-RepoSense/blob/master/run.sh"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("run.sh")])]),_v(" is a script used for automating RepoSense report generation.")])]),_v(" "),_c('h3',{attrs:{"id":"customizing-the-reposense-command-2"}},[_v("Customizing the RepoSense command"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#customizing-the-reposense-command-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("You can update the RepoSense command (i.e., the last line) in the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("run.sh")]),_v(" to match your needs.")]),_v(" "),_c('div',{staticClass:"indented-level0"},[_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('span',[_c('span',{staticClass:"glyphicon glyphicon-log-in",attrs:{"aria-hidden":"true"}})]),_v(" Appendix: "),_c('strong',[_v("CLI syntax reference")])])]},proxy:true}])},[_v(" "),_c('div',[_c('h1',{staticClass:"display-4",attrs:{"id":"appendix-cli-syntax-reference-2"}},[_c('span',[_v("Appendix: CLI syntax reference")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#appendix-cli-syntax-reference-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{staticClass:"lead"},[_c('p',[_v("The command "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar")]),_v(" takes several flags.")])]),_v(" "),_c('box',[_c('p',[_c('strong',[_v("Examples")]),_v(":")]),_v(" "),_c('p',[_v("An example of a command using most parameters:"),_c('br'),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar --repos https://github.com/reposense/RepoSense.git --output ./report_folder --since 31/1/2017 --until 31/12/2018 --formats java adoc xml --view --ignore-standalone-config --last-modified-date --timezone UTC+08 --find-previous-authors --analyze-authorship --originality-threshold 0.66")])]),_v(" "),_c('p',[_v("Same command as above but using most parameters in alias format:"),_c('br'),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar -r https://github.com/reposense/RepoSense.git -o ./report_folder -s 31/1/2017 -u 31/12/2018 -f java adoc xml -v -i -l -t UTC+08 -F -A -ot 0.66")])])]),_v(" "),_c('p',[_v("The section below provides explanations for each of the flags.")]),_v(" "),_c('h3',{attrs:{"id":"analyze-authorship-a-2"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--analyze-authorship")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-A")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#analyze-authorship-a-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--analyze-authorship")])]),_v(": Performs further analysis to distinguish between partial and full credit attribution for\nlines of code assigned to the author.")]),_v(" "),_c('ul',[_c('li',[_v("Default: this feature is turned "),_c('em',[_c('strong',[_v("off")])]),_v(" by default and the author will receive partial credits for all lines of\ncode, as the code lines are at least partial credit but may not qualify for full credit.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-A")]),_v(" (upper case)")]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--analyze-authorship")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-A")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("A darker background colour represents full credit, while a lighter background colour represents partial credit.")]),_v(" "),_c('p',[_v("If the code is attributed to a different author by the user via "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("@@author")]),_v(" tag, then the new author will be given\npartial credit.")])]),_v(" "),_c('h3',{attrs:{"id":"assets-a-2"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--assets")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-a")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#assets-a-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{attrs:{"id":"section-assets"}},[_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--assets ASSETS_DIRECTORY")])]),_v(": Specifies where to place assets for report generation.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ASSETS_DIRECTORY")]),_v(" The directory containing the assets files. A "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("favicon.ico")]),_v(" file can be placed here to customize the favicon of the dashboard, while a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("title.md")]),_v(" file can be placed to customize the "),_c('a',{attrs:{"href":"https://reposense.org/ug/customizingReports.html#add-a-title"}},[_v("title")]),_v(" of the report using "),_c('a',{attrs:{"href":"https://www.markdownguide.org/basic-syntax/"}},[_v("Markdown syntax")]),_v(".")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-a")])]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--assets ./assets")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-a ./assets")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("If "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--assets")]),_v(" is not specified, RepoSense looks for assets in the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./assets")]),_v(" directory.")])])])],1),_v(" "),_c('h3',{attrs:{"id":"config-c-2"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--config")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-c")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#config-c-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{attrs:{"id":"section-config"}},[_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--config CONFIG_DIRECTORY")])]),_v(": Specifies that config files located in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("CONFIG_DIRECTORY")]),_v(" should be used to customize the report.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("CONFIG_DIRECTORY")]),_v(" The directory containing the config files. Should contain a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(" file. Optionally, can contain an "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(" file or/and a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("group-config.csv")]),_v(" file or/and a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("report-config.json")]),_v(" file or/and a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("blurbs.md")]),_v(" file.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-c")])]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar --config ./config")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("Cannot be used with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repos")]),_v(". The "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repos")]),_v(" flag will take precedence over this flag.")]),_v(" "),_c('li',[_v("If both "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repos")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--config")]),_v(" are not specified, RepoSense looks for config files in the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./config")]),_v(" directory.")]),_v(" "),_c('li',[_v("Config files must follow "),_c('a',{attrs:{"href":"/RepoSense/ug/configFiles.html"}},[_v("this")]),_v(" format.")])])])],1),_v(" "),_c('h3',{attrs:{"id":"formats-f-2"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--formats")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-f")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#formats-f-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--formats LIST_OF_FORMATS")])]),_v(": Specifies which file extensions to be included in the analysis.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("LIST_OF_FORMATS")]),_v(" A space-separated list of file extensions that should be included in the analysis."),_c('br'),_v("\nDefault: all file formats")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-f")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--formats css fxml gradle")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-f css fxml gradle")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Binary file formats, such as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("jpg")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("png")]),_v(","),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("exe")]),_v(","),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("zip")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("rar")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("docx")]),_v(", and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("pptx")]),_v(", all will be labelled as the file type "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("binary")]),_v(" in the generated report.")])]),_v(" "),_c('h3',{attrs:{"id":"find-previous-authors-f-2"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--find-previous-authors")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-F")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#find-previous-authors-f-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--find-previous-authors")])]),_v(": Utilizes Git blame's ignore revisions functionality, RepoSense will attempt to blame the line changes caused by commits in the ignore commit list to the previous authors who altered those lines (if available).")]),_v(" "),_c('ul',[_c('li',[_v("Default: RepoSense will assume that no authors are responsible for the code changes in the lines altered by commits in the ignore commit list.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-F")]),_v(" (uppercase F)")]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--find-previous-authors")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-F")])])]),_v(" "),_c('h3',{attrs:{"id":"help-h-2"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--help")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-h")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#help-h-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--help")])]),_v(": Shows the help message.")]),_v(" "),_c('ul',[_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-h")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Cannot be used with any other flags. This flag takes precedence over all other flags.")])]),_v(" "),_c('h3',{attrs:{"id":"ignore-standalone-config-i-2"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--ignore-standalone-config")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-i")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#ignore-standalone-config-i-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--ignore-standalone-config")])]),_v(": Specifies that the standalone config file in the repo should be ignored.")]),_v(" "),_c('ul',[_c('li',[_v("Default: the standalone config file is not ignored")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-i")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--ignore-standalone-config")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-i")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("This flag overrides the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Ignore standalone config")]),_v(" field in the CSV config file.")])]),_v(" "),_c('h3',{attrs:{"id":"ignore-filesize-limit-i-2"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--ignore-filesize-limit")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-I")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#ignore-filesize-limit-i-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--ignore-filesize-limit")])]),_v(": Specifies that the file size limit (both default and user-defined) should be ignored during the analysis.")]),_v(" "),_c('ul',[_c('li',[_v("Default: the file size limit is not ignored")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-I")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--ignore-filesize-limit")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-I")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("All files are subject to a default file size limit or a custom size limit set by the user. Most files should not be\naffected by the default size limit. This flag can be useful for including files in your report that are affected by\nthe size limit. Note that this flag may result in large report sizes and/or slower report generation.")])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("This flag overrides the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Ignore file size limit")]),_v(" field in the CSV config file.")])]),_v(" "),_c('h3',{attrs:{"id":"last-modified-date-l-2"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--last-modified-date")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-l")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#last-modified-date-l-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--last-modified-date")])]),_v(": Specifies that the last modified date of each line of code should be added to "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("authorship.json")]),_v(".")]),_v(" "),_c('ul',[_c('li',[_v("Default: the last modified date of each line of code will not be added to "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("authorship.json")])]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-l")]),_v(" (lowercase L)")]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--last-modified-date")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-l")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("Cannot be used with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--shallow-cloning")]),_v(". This may result in an incorrect last modified date.")]),_v(" "),_c('li',[_v("The last modified dates will be in the same timezone specified with the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--timezone")]),_v(" flag.")])])]),_v(" "),_c('h3',{attrs:{"id":"originality-threshold-ot-2"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--originality-threshold")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-ot")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#originality-threshold-ot-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--originality-threshold [VALUE]")])]),_v(": Specifies the cut-off point for partial and full credit\nin "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--analyze-authorship")]),_v(". Author will be given full credit if their contribution exceeds this threshold, else partial\ncredit is given.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("VALUE")]),_v(" Optional. Acceptable range: [0.0, 1.0]."),_c('br'),_v("\nDefault: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("0.51")])]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-ot")])]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--originality-threshold 0.66")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-ot 0.66")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("Requires "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--analyze-authorship")]),_v(" flag.")]),_v(" "),_c('li',[_v("An author's contribution, or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("originality score")]),_v(", is calculated using Levenshtein Distance (Edit Distance) algorithm.\nWe compare the difference between current code line and its previous versions.")])])]),_v(" "),_c('h3',{attrs:{"id":"output-o-2"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--output")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-o")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#output-o-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--output OUTPUT_DIRECTORY")])]),_v(": Indicates where to save the report generated.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("OUTPUT_DIRECTORY")]),_v(" The location for the generated "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("reposense-report")]),_v(" folder."),_c('br'),_v("\nDefault: current directory")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-o")])]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--output ./foo")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-o ./foo")]),_v(" (the report will be in the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./foo/reposense-report")]),_v(" folder)")])]),_v(" "),_c('h3',{attrs:{"id":"period-p-2"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--period")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-p")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#period-p-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--period PERIOD")])]),_v(": Specifies the period of analysis window.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("PERIOD")]),_v(" The period of analysis window, in the format "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("nd")]),_v(" (for n days) or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("nw")]),_v(" (for n weeks). It is used to calculate end date if only start date is specified, or calculate end date if only start date is specified.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-p")])]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--period 30d")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--period 4w")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("If both start date and end date are not specified, the date of generating the report will be taken as the end date.")]),_v(" "),_c('li',[_v("May analyze the incorrect date range if used with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since d1")]),_v(". The program will throw a warning.")]),_v(" "),_c('li',[_v("Cannot be used with both "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--until")]),_v(". The program will throw an exception.")])])]),_v(" "),_c('h3',{attrs:{"id":"repo-repos-r-2"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repo")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repos")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-r")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#repo-repos-r-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repo REPO_LOCATION")])]),_v(": Specifies which repositories to analyze.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("REPO_LOCATION")]),_v(" A list of URLs or the disk location of the git repositories to analyze, separated by spaces.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-r")])]),_v(" "),_c('li',[_v("Examples:\n"),_c('ul',[_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repos https://github.com/reposense/RepoSense.git")])]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repo https://github.com/reposense/RepoSense.git c:/myRepose/foo/bar")]),_v(": analyzes the two specified repos (one remote, one local) and generates one report containing details of both.")])])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Cannot be used with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--config")]),_v(". This flag takes precedence over "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--config")]),_v(".")])]),_v(" "),_c('h3',{attrs:{"id":"shallow-cloning-s-2"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--shallow-cloning")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-S")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#shallow-cloning-s-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--shallow-cloning")])]),_v(": Clones repositories using Git's shallow cloning functionality, which can significantly reduce the time taken to clone large repositories. However, the flag should not be used for smaller repositories where the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(".git")]),_v(" file is smaller than 500 MB, as it would create overhead.")]),_v(" "),_c('ul',[_c('li',[_v("Default: RepoSense does not clone repositories using Git's shallow cloning functionality.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-S")]),_v(" (uppercase S)")]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--shallow-cloning")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-S")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Cannot be used with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--last-modified-date")]),_v(". This may result in an incorrect last modified date.")])]),_v(" "),_c('h3',{attrs:{"id":"since-s-2"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-s")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#since-s-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since START_DATE")])]),_v(": Specifies the start date for the period to be analyzed.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("START_DATE")]),_v(" The first day of the period to be analyzed, in the format "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("DD/MM/YYYY")]),_v("."),_c('br'),_v("\nDefault: one month before the current date")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-s")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since 21/10/2017")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-s 21/10/2017")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("If the start date is not specified, only commits made one month before the end date (if specified) or the date of generating the report, will be captured and analyzed.")]),_v(" "),_c('li',[_v("If "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("d1")]),_v(" is specified as the start date ("),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since d1")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-s d1")]),_v("), then the program will search for the earliest commit date of all repositories and use that as the start date.")]),_v(" "),_c('li',[_v("If "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("d1")]),_v(" is specified together with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--period")]),_v(", then the program will warn that the date range being analyzed may be incorrect.")])])]),_v(" "),_c('h3',{attrs:{"id":"timezone-t-2"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--timezone")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-t")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#timezone-t-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--timezone ZONE_ID")])]),_v(": Indicates the timezone to be used for the analysis.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ZONE_ID")]),_v(" The timezone in the format "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ZONE_ID[±hh[mm]]")]),_v("."),_c('br'),_v("\nDefault: system's default timezone")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-t")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--timezone UTC+08")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-t UTC-1030")])])]),_v(" "),_c('h3',{attrs:{"id":"until-u-2"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--until")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-u")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#until-u-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--until END_DATE")])]),_v(": Specifies the end date of the analysis period.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("END_DATE")]),_v(" The last date of the period to be analyzed, in the format "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("DD/MM/YYYY")]),_v("."),_c('br'),_v("\nDefault: current date")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-u")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--until 21/10/2017")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-u 21/10/2017")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Note: If the end date is not specified, the date of generating the report will be taken as the end date.")])]),_v(" "),_c('h3',{attrs:{"id":"version-v-2"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--version")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-V")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#version-v-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--version")])]),_v(": Shows the version of RepoSense.")]),_v(" "),_c('ul',[_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-V")]),_v(" (upper case)")])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Cannot be used with any other flags. This flag takes precedence over all other flags other than "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--help")]),_v(".")])]),_v(" "),_c('h3',{attrs:{"id":"view-v-2"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--view")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-v")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#view-v-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--view [REPORT_FOLDER]")])]),_v(": Specifies that the report should be opened in the default browser.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("REPORT_FOLDER")]),_v(" Optional. If specified, no analysis will be performed and the report specified by the argument will be opened."),_c('br'),_v("\nDefault: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./reposense-report")])]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-v")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--view")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-v")])])])],1)])],1),_v(" "),_c('p'),_v(" "),_c('h3',{attrs:{"id":"specifying-which-version-of-reposense-to-use-2"}},[_v("Specifying which version of RepoSense to use"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#specifying-which-version-of-reposense-to-use-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Depending on which version you wish to use for report generation, add one of the following flags to the line "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./get-reposense.py")]),_v(" in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("run.sh")]),_v(" (e.g., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./get-reposense.py --release")]),_v("):")]),_v(" "),_c('ul',[_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--release")]),_v(": Use the latest release (Stable)")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--master")]),_v(": Use the latest version of the master branch")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--tag TAG")]),_v(" (e.g. "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--tag v1.6.1")]),_v("): Use the version identified by the Git tag given")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--commit COMMIT")]),_v(" (e.g. "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--commit abc123")]),_v("): Use the version identified by the Git commit SHA given")])])])])],1),_v(" "),_c('p'),_v(" "),_c('div',{staticClass:"indented-level0"},[_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('span',[_c('span',{staticClass:"glyphicon glyphicon-log-in",attrs:{"aria-hidden":"true"}})]),_v(" Appendix: "),_c('strong',[_v("Config files format")])])]},proxy:true}])},[_v(" "),_c('div',[_c('h1',{staticClass:"display-4",attrs:{"id":"appendix-config-files-format-2"}},[_c('span',[_v("Appendix: Config files format")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#appendix-config-files-format-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{staticClass:"lead"},[_c('p',[_v("Given below are the details of the various config files used by RepoSense.")])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_c('strong',[_v("RepoSense ignores the order of column headers in the CSV config files. However, the spelling of the column headers must match the specified headers exactly, or the column would be ignored by RepoSense.")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_c('strong',[_v("A value in a config file is optional to provide unless it is specified as "),_c('span',{staticClass:"badge bg-danger"},[_v("mandatory")])]),_v(".")])]),_v(" "),_c('h2',{attrs:{"id":"repo-config-csv-2"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#repo-config-csv-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(" file contains repo-level config data.")]),_v(" Each row represents a repository's configuration ("),_c('a',{attrs:{"href":"/RepoSense/ug/repo-config.csv"}},[_v("example")]),_v(").")]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Column Name")]),_v(" "),_c('th',[_v("Explanation")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_v("Repository's Location "),_c('span',{staticClass:"badge bg-danger"},[_v("mandatory")])]),_v(" "),_c('td',[_v("The "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Remote Repo URL")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Disk Path")]),_v(" to the git repository e.g., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://github.com/foo/bar.git")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("C:\\Users\\user\\Desktop\\GitHub\\foo\\bar")])])]),_v(" "),_c('tr',[_c('td',[_v("Branch")]),_v(" "),_c('td',[_v("The branch to analyze in the target repository e.g., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("master")]),_v(". Default: the default branch of the repo")])]),_v(" "),_c('tr',[_c('td',[_v("File formats"),_c('sup',[_v("*+")])]),_v(" "),_c('td',[_v("The file extensions to analyze. Binary file formats, such as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("png")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("jpg")]),_v(", will be automatically labelled as the file type "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("binary")]),_v(" in the generated report. Default: all file formats")])]),_v(" "),_c('tr',[_c('td',[_v("Find Previous Authors")]),_v(" "),_c('td',[_v("Enter "),_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("yes")])]),_v(" to utilize Git blame's ignore revisions functionality, RepoSense will attempt to blame the line changes caused by commits in the ignore commit list to the previous authors who altered those lines (if available).")])]),_v(" "),_c('tr',[_c('td',[_v("Ignore Glob List"),_c('sup',[_v("*+")])]),_v(" "),_c('td',[_v("The list of file path globs to ignore during analysis for each author e.g., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("test/**;temp/**")]),_v(". Refer to the "),_c('a',{attrs:{"href":"https://docs.oracle.com/javase/tutorial/essential/io/fileOps.html#glob"}},[_c('em',[_v("glob format")])]),_v(" for the path glob syntax.")])]),_v(" "),_c('tr',[_c('td',[_v("Ignore standalone config")]),_v(" "),_c('td',[_v("To ignore the standalone config file (if any) in target repository, enter "),_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("yes")])]),_v(". If the cell is empty, the standalone config file in the repo (if any) will take precedence over configurations provided in the csv files.")])]),_v(" "),_c('tr',[_c('td',[_v("Ignore Commits List"),_c('sup',[_v("*+")])]),_v(" "),_c('td',[_v("The list of commits to ignore during analysis. For accurate results, the commits should be provided with their full hash. Additionally, a range of commits can be specified using the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("..")]),_v(" notation e.g. "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("abc123..def456")]),_v(" (both inclusive).")])]),_v(" "),_c('tr',[_c('td',[_v("Ignore Authors List"),_c('sup',[_v("*+")])]),_v(" "),_c('td',[_v("The list of authors to ignore during analysis. Authors should be specified by their "),_c('a',{attrs:{"href":"#a-note-about-git-author-name"}},[_v("Git Author Name")]),_v(".")])]),_v(" "),_c('tr',[_c('td',[_v("Shallow Cloning")]),_v(" "),_c('td',[_v("Enter "),_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("yes")])]),_v(" to clone the repository using Git's shallow cloning functionality. This option can significantly reduce the time taken to clone large repositories. However, the option should ideally be disabled for smaller repositories where the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(".git")]),_v(" file is smaller than 500 MB, as it would create overhead.")])]),_v(" "),_c('tr',[_c('td',[_v("File Size Limit"),_c('sup',[_v("+")])]),_v(" "),_c('td',[_v("Enter a file size limit for the repository in bytes as a single number without units (for a size limit of 1MB for example, enter 1000000). This file size limit will override the default file size limit (500KB). Files exceeding the file size limit will be marked as ignored and only the file name and line count will be reflected in the report.")])]),_v(" "),_c('tr',[_c('td',[_v("Ignore File Size Limit")]),_v(" "),_c('td',[_v("Enter "),_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("yes")])]),_v(" to ignore both the default file size limit and the file size limit possibly set by the user in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(".")])]),_v(" "),_c('tr',[_c('td',[_v("Skip Ignored File Analysis")]),_v(" "),_c('td',[_v("Enter "),_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("yes")])]),_v(" to ignore analysis of files exceeding the file size limit entirely. If file analysis is skipped, all information about the file will be omitted from the generated report. This option can significantly improve report generation time.")])])])])]),_c('box',{attrs:{"type":"info","seamless":""}},[_v("\nThe Shallow Cloning option is incompatible with the \"--last-modified-date\" CLI flag.\n")]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_v("\nIf Ignore File Size Limit is yes, the File Size Limit and Skip Ignored File Analysis columns are ignored.\n")]),_v(" "),_c('p',[_c('sup',[_v("* "),_c('strong',[_v("Multi-value column")]),_v(": multiple values can be entered in this column using a semicolon "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(";")]),_v(" as the separator.")]),_c('br'),_v(" "),_c('sup',[_v("+ "),_c('strong',[_v("Overrideable column")]),_v(": prepend with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("override:")]),_v(" to use entered value(s) instead of value(s) from standalone config.")])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("When using "),_c('a',{attrs:{"href":"#config-json-standalone-config-file"}},[_v("standalone config")]),_v(" (if it is not ignored), it is possible to override specific values from the standalone config by prepending the entered value with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("override:")]),_v(".")])]),_v(" "),_c('h2',{attrs:{"id":"author-config-csv-2"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#author-config-csv-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Optionally, you can use an "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(" (which should be in the same directory as the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(" file) to provide more details about the authors to analyze ("),_c('a',{attrs:{"href":"/RepoSense/ug/author-config.csv"}},[_v("example")]),_v("). It should contain the following columns:")]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Column Name")]),_v(" "),_c('th',[_v("Explanation")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_v("Repository's Location"),_c('sup',[_v("*")])]),_v(" "),_c('td',[_v("Same as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(". Default: all the repos in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(".")])]),_v(" "),_c('tr',[_c('td',[_v("Branch")]),_v(" "),_c('td',[_v("The branch to analyze for this author, e.g., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("master")]),_v(". Default: the author will be bound to all the repos in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(" that has the same repo's location, regardless of branch.")])]),_v(" "),_c('tr',[_c('td',[_v("Author's Git Host ID"),_c('sup',[_v("#")]),_v(" "),_c('span',{staticClass:"badge bg-danger"},[_v("mandatory")])]),_v(" "),_c('td',[_v("Username of the target author's profile on GitHub, GitLab or Bitbucket, e.g."),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("JohnDoe")]),_v(".")])]),_v(" "),_c('tr',[_c('td',[_v("Author's Emails"),_c('sup',[_v("*")])]),_v(" "),_c('td',[_v("Associated emails of the author. For GitHub users, this can be found in your "),_c('a',{attrs:{"href":"https://github.com/settings/emails"}},[_v("GitHub settings")]),_v(".")])]),_v(" "),_c('tr',[_c('td',[_v("Author's Display Name")]),_v(" "),_c('td',[_v("The name to display for the author. Default: author's username.")])]),_v(" "),_c('tr',[_c('td',[_v("Author's Git Author Name"),_c('sup',[_v("*")])]),_v(" "),_c('td',[_v("The meaning of "),_c('em',[_v("Git Author Name")]),_v(" is explained in "),_c('a',{attrs:{"href":"#a-note-about-git-author-name"}},[_c('em',[_v("A note about git author name")])]),_v(".")])]),_v(" "),_c('tr',[_c('td',[_v("Ignore Glob List"),_c('sup',[_v("*")])]),_v(" "),_c('td',[_v("Files to ignore for this author, in addition to files ignored by the patterns specified in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(". The path glob syntax is the same as that of Ignore Glob List in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(".")])])])])]),_c('p',[_c('sup',[_v("* "),_c('strong',[_v("Multi-value column")]),_v(": multiple values can be entered in this column using a semicolon "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(";")]),_v(" as the separator.")]),_v(" "),_c('br'),_v(" "),_c('sup',[_v("# For backward compatibility, "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Author's GitHub ID")]),_v(" is still accepted as the header in place of "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Author's Git Host ID")]),_v(".")])]),_v(" "),_c('p',[_v("If "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(" is not given and the repo has not provided author details in a standalone config file, all the authors of the repositories within the date range specified (if any) will be analyzed.")]),_v(" "),_c('p',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(" has some advanced syntax that can help to reduce duplication of the author's information. The syntax guide is given below:")]),_v(" "),_c('div',{staticClass:"indented-level0"},[_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('span',[_c('span',{staticClass:"glyphicon glyphicon-log-in",attrs:{"aria-hidden":"true"}})]),_v(" Appendix: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(" advanced syntax")])]},proxy:true}])},[_v(" "),_c('div',[_c('h1',{staticClass:"display-4",attrs:{"id":"appendix-author-config-csv-advanced-syntax-2"}},[_c('span',[_v("Appendix: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(" advanced syntax")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#appendix-author-config-csv-advanced-syntax-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{staticClass:"lead"},[_c('p',[_v("Given below are the advanced syntax available for "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(".")])]),_v(" "),_c('h2',{attrs:{"id":"multiple-repository-s-location-per-author-2"}},[_v("Multiple "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repository's Location")]),_v(" per author"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#multiple-repository-s-location-per-author-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('h4',{attrs:{"id":"specifying-multiple-repository-s-location-2"}},[_v("Specifying multiple "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repository's Location")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#specifying-multiple-repository-s-location-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("To specify multiple "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repository's Location")]),_v(" in a single row, we can use a semicolon "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(";")]),_v(" as a separator.")]),_v(" "),_c('p',[_v("Below is an example:")]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Repository's Location")]),_v(" "),_c('th',[_v("Branch")]),_v(" "),_c('th',[_v("Author's Git Host ID")]),_v(" "),_c('th',[_v("... Hidden columns")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://github.com/reposense/RepoSense.git;https://github.com/MarkBind/markbind.git")])]),_v(" "),_c('td',[_v("master")]),_v(" "),_c('td',[_v("sikai00")]),_v(" "),_c('td',[_v("--")])])])])]),_c('p',[_v("We have now furnished author details for both repositories in a single row, instead of having two individual rows per "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repository's Location")]),_v(".")]),_v(" "),_c('br'),_v(" "),_c('h4',{attrs:{"id":"specifying-repository-s-location-with-one-or-more-specific-branches-2"}},[_v("Specifying "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repository's Location")]),_v(" with one or more specific branches"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#specifying-repository-s-location-with-one-or-more-specific-branches-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("To list out one or more branches for a particular "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repository's Location")]),_v(", we can use a pipe "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("|")]),_v(" separator to demarcate the different branches.")]),_v(" "),_c('p',[_v("Below is an example:")]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Repository's Location")]),_v(" "),_c('th',[_v("Branch")]),_v(" "),_c('th',[_v("Author's Git Host ID")]),_v(" "),_c('th',[_v("... Hidden columns")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://github.com/reposense/RepoSense.git~master|release|cypress")])]),_v(" "),_c('td',[_v("master")]),_v(" "),_c('td',[_v("sikai00")]),_v(" "),_c('td',[_v("--")])])])])]),_c('p',[_v("We have now provided author details for three different branches in a single repo, using a single row.")]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("The branch specified through the delimiter syntax will take precedence over the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Branch")]),_v(" column.")])]),_v(" "),_c('h2',{attrs:{"id":"using-github-branch-url-as-repository-s-location-2"}},[_v("Using GitHub branch URL as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repository's Location")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#using-github-branch-url-as-repository-s-location-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("We can also use GitHub branch URL as copied from the address bar directly, to be able to quickly use the URL to specify the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repository's Location")]),_v(" and a specific "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Branch")]),_v(" at the same time.")]),_v(" "),_c('p',[_v("Below is an example:")]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Repository's Location")]),_v(" "),_c('th',[_v("Branch")]),_v(" "),_c('th',[_v("Author's Git Host ID")]),_v(" "),_c('th',[_v("... Hidden columns")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://github.com/reposense/RepoSense/tree/release")])]),_v(" "),_c('td'),_v(" "),_c('td',[_v("sikai00")]),_v(" "),_c('td',[_v("--")])])])])]),_c('p',[_v("There is no need to specify the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Branch")]),_v(" column now, as we have specified it through the GitHub branch URL.")]),_v(" "),_c('box',{attrs:{"type":"warning","seamless":""}},[_c('p',[_v("GitLab and BitBucket branch URL are not supported at the moment.")])]),_v(" "),_c('h2',{attrs:{"id":"combining-the-advanced-syntax-2"}},[_v("Combining the advanced syntax"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#combining-the-advanced-syntax-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("It is possible to combine the above-mentioned advanced syntax. By doing so, we can go from:")]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Repository's Location")]),_v(" "),_c('th',[_v("Branch")]),_v(" "),_c('th',[_v("Author's Git Host ID")]),_v(" "),_c('th',[_v("... Hidden columns")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://github.com/MarkBind/markbind/tree/vue3-migration")])]),_v(" "),_c('td'),_v(" "),_c('td',[_v("sikai00")]),_v(" "),_c('td',[_v("--")])]),_v(" "),_c('tr',[_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://github.com/reposense/RepoSense.git")])]),_v(" "),_c('td',[_v("master")]),_v(" "),_c('td',[_v("sikai00")]),_v(" "),_c('td',[_v("--")])]),_v(" "),_c('tr',[_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://github.com/reposense/RepoSense.git")])]),_v(" "),_c('td',[_v("cypress")]),_v(" "),_c('td',[_v("sikai00")]),_v(" "),_c('td',[_v("--")])])])])]),_c('p',[_v("to:")]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Repository's Location")]),_v(" "),_c('th',[_v("Branch")]),_v(" "),_c('th',[_v("Author's Git Host ID")]),_v(" "),_c('th',[_v("... Hidden columns")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://github.com/MarkBind/markbind/tree/vue3-migration;https://github.com/reposense/RepoSense.git~master|cypress")])]),_v(" "),_c('td'),_v(" "),_c('td',[_v("sikai00")]),_v(" "),_c('td',[_v("--")])])])])]),_c('br')],1)])],1),_v(" "),_c('p'),_v(" "),_c('h2',{attrs:{"id":"group-config-csv-2"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("group-config.csv")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#group-config-csv-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Optionally, you can provide a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("group-config.csv")]),_v("(which should be in the same directory as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(" file) to provide details on any custom groupings for files in specified repositories ("),_c('a',{attrs:{"href":"/RepoSense/ug/group-config.csv"}},[_v("example")]),_v("). It should contain the following columns:")]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Column Name")]),_v(" "),_c('th',[_v("Explanation")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_v("Repository's Location")]),_v(" "),_c('td',[_v("Same as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(". Default: all the repos in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")])])]),_v(" "),_c('tr',[_c('td',[_v("Group Name "),_c('span',{staticClass:"badge bg-danger"},[_v("mandatory")])]),_v(" "),_c('td',[_v("Name of the group, e.g.,"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("test")]),_v(".")])]),_v(" "),_c('tr',[_c('td',[_v("Globs * "),_c('span',{staticClass:"badge bg-danger"},[_v("mandatory")])]),_v(" "),_c('td',[_v("The list of file path globs to include for specified group, e.g.,"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("**/test/*;**.java")]),_v(".")])])])])]),_c('p',[_c('sup',[_v("* "),_c('strong',[_v("Multi-value column")]),_v(": multiple values can be entered in this column using a semicolon "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(";")]),_v(" as the separator.")])]),_v(" "),_c('p',[_v("Note that a file in a given repository should only be tagged to one group. "),_c('br'),_v("\ne.g.: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("example.java")]),_v(" in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("example-repo")]),_v(" can either be in the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("test")]),_v(" group or the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("code")]),_v(" group, but not in both "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("test")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("code")]),_v(" group. If multiple groups are specified for a given file, the latter group (i.e., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("code")]),_v(" group) is set for the file.")]),_v(" "),_c('h2',{attrs:{"id":"report-config-json-2"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("report-config.json")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#report-config-json-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("You can optionally use "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("report-config.json")]),_v(" to customize report generation by providing the following information. ("),_c('a',{attrs:{"href":"/RepoSense/ug/report-config.json"}},[_v("example")]),_v(")")]),_v(" "),_c('p',[_c('strong',[_v("Fields to provide")]),_v(":")]),_v(" "),_c('ul',[_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("title")]),_v(": Title of the generated report, which is also the title of the deployed dashboard. Default: \"RepoSense Report\"")])]),_v(" "),_c('div',{attrs:{"id":"section-standalone"}},[_c('h2',{attrs:{"id":"config-json-standalone-config-file-2"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("config.json")]),_v(" (standalone config file)"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#config-json-standalone-config-file-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Repo owners can provide the following additional information to RepoSense using a config file that we call the "),_c('strong',[_c('em',[_v("standalone config file")])]),_v(":")]),_v(" "),_c('ul',[_c('li',[_v("which files/authors/commits to analyze/omit")]),_v(" "),_c('li',[_v("which git and git host usernames belong to which authors")]),_v(" "),_c('li',[_v("the display of an author")])]),_v(" "),_c('p',[_v("To use this feature, add a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("_reposense/config.json")]),_v(" to the root of your repo using the format in the example below ("),_c('a',{attrs:{"href":"https://github.com/reposense/RepoSense/blob/master/_reposense/config.json"}},[_v("another example")]),_v(") and "),_c('strong',[_v("commit it")]),_v(" (reason: RepoSense can see committed code only):")]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"no-line-numbers hljs json"}},[_c('span',[_v("{\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"ignoreGlobList\"")]),_v(": ["),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"about-us/**\"")]),_v(", "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"**index.html\"")]),_v("],\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"formats\"")]),_v(": ["),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"html\"")]),_v(", "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"css\"")]),_v("],\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"ignoreCommitList\"")]),_v(": ["),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"90018e49f129ce7e0abdc8b18e91c9813588c601\"")]),_v(", "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"67890def\"")]),_v(", "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"abc123..def456\"")]),_v("],\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"ignoreAuthorList\"")]),_v(": ["),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"charlie\"")]),_v("],\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"authors\"")]),_v(":\n")]),_c('span',[_v(" [\n")]),_c('span',[_v(" {\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"gitId\"")]),_v(": "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"alice\"")]),_v(",\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"emails\"")]),_v(": ["),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"alice@example.com\"")]),_v(", "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"alicet@example.com\"")]),_v("],\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"displayName\"")]),_v(": "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"Alice T.\"")]),_v(",\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"authorNames\"")]),_v(": ["),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"AT\"")]),_v(", "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"A\"")]),_v("],\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"ignoreGlobList\"")]),_v(": ["),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"**.css\"")]),_v("]\n")]),_c('span',[_v(" },\n")]),_c('span',[_v(" {\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"gitId\"")]),_v(": "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"bob\"")]),_v("\n")]),_c('span',[_v(" }\n")]),_c('span',[_v(" ]\n")]),_c('span',[_v("}\n")])])]),_c('p',[_v("Note: all fields are optional unless specified otherwise.")]),_v(" "),_c('p',[_c('strong',[_v("Fields to provide "),_c('em',[_v("repository-level")]),_v(" info")]),_v(":")]),_v(" "),_c('ul',[_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ignoreGlobList")]),_v(": Folders/files to ignore, specified using the "),_c('a',{attrs:{"href":"https://docs.oracle.com/javase/tutorial/essential/io/fileOps.html#glob"}},[_c('em',[_v("glob format")])]),_v(".")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("formats")]),_v(": File formats to analyze. Binary file formats, such as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("png")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("jpg")]),_v(", will be automatically labelled as the file type "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("binary")]),_v(" in the generated report. Default: all file formats")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ignoreCommitList")]),_v(": The list of commits to ignore during analysis. For accurate results, the commits should be provided with their full hash. Additionally, a range of commits can be specified using the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("..")]),_v(" notation e.g. "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("abc123..def456")]),_v(" (both inclusive).")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ignoreAuthorList")]),_v(": The list of authors to ignore during analysis. Authors specified in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("authors")]),_v(" field or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(" will be also be omitted if they are in this list. Authors should be specified by their "),_c('a',{attrs:{"href":"#a-note-about-git-author-name"}},[_v("Git Author Name")]),_v(".")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("fileSizeLimit")]),_v(": A file size limit for the repository in bytes as a single number without units, that will override the default file size limit. If not specified, the default file size limit will continue to be used.")])]),_v(" "),_c('p',[_c('strong',[_v("Fields to provide "),_c('em',[_v("author-level")]),_v(" info")]),_v(":"),_c('br'),_v("\nNote: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("authors")]),_v(" field should contain "),_c('em',[_v("all")]),_v(" authors that should be captured in the analysis.")]),_v(" "),_c('ul',[_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("gitId")]),_v(": Username of the author. "),_c('span',{staticClass:"badge bg-danger"},[_v("mandatory")]),_v(" field.")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("emails")]),_v(": Associated git emails of the author. For GitHub, this can be found in your "),_c('a',{attrs:{"href":"https://github.com/settings/emails"}},[_v("GitHub settings")]),_v(".")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("displayName")]),_v(": Name to display on the report for this author.")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("authorNames")]),_v(": Git Author Name(s) used in the author's commits. By default, RepoSense assumes an author would use their remote Git Host username as the Git username too. The meaning of "),_c('em',[_v("Git Author Name")]),_v(" is explained in "),_c('a',{attrs:{"href":"#a-note-about-git-author-name"}},[_c('em',[_v("A note about git author name")])]),_v(".")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ignoreGlobList")]),_v(": "),_c('em',[_v("Additional")]),_v(" (i.e. on top of the repo-level "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ignoreGlobList")]),_v(") folders/files to ignore for a specific author. The path glob syntax is specified by the "),_c('a',{attrs:{"href":"https://docs.oracle.com/javase/tutorial/essential/io/fileOps.html#glob"}},[_c('em',[_v("glob format")])]),_v(". In the example above, the actual "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ignoreGlobList")]),_v(" for "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("alice")]),_v(" would be "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("[\"about-us/**\", \"**index.html\", \"**.css\"]")]),_v(".")])]),_v(" "),_c('p',[_v("To verify your standalone configuration is as intended, add the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("_reposense/config.json")]),_v(" to your local copy of repo and run RepoSense against it as follows:"),_c('br')]),_v(" "),_c('ul',[_c('li',[_v("Format: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar --repo LOCAL_REPO_LOCATION")]),_v(" "),_c('br')]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar --repo c:/myRepose/foo/bar")]),_c('br'),_v("\nAfter that, view the report to see if the configuration you specified in the config file is being reflected correctly in the report.")])]),_v(" "),_c('h2',{attrs:{"id":"a-note-about-git-author-name-2"}},[_v("A note about git author name"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#a-note-about-git-author-name-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Git Author Name")]),_v(" refers to the customizable author's display name set in the local "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(".gitconfig")]),_v(" file. For example, in the Git Log's display:")]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"no-line-numbers hljs"}},[_c('span',[_v("...\n")]),_c('span',[_v("commit cd7f610e0becbdf331d5231887d8010a689f87c7\n")]),_c('span',[_v("Author: ConfiguredAuthorName \n")]),_c('span',[_v("Date: Fri Feb 9 19:14:41 2018 +0800\n")]),_c('span',[_v("\n")]),_c('span',[_v(" Make some changes to show my new author's name\n")]),_c('span',[_v("\n")]),_c('span',[_v("commit e3f699fd4ef128eebce98d5b4e5b3bb06a512f49\n")]),_c('span',[_v("Author: ActualGitHostId \n")]),_c('span',[_v("Date: Fri Feb 9 19:13:13 2018 +0800\n")]),_c('span',[_v("\n")]),_c('span',[_v(" Initial commit\n")]),_c('span',[_v(" ...\n")])])]),_c('p',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ActualGitHostId")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ConfiguredAuthorName")]),_v(" are both "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Git Author Name")]),_v(" of the same author."),_c('br'),_v("\nTo find the author name that you are currently using for your current git repository, run the following command within your git repository:")]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"no-line-numbers hljs"}},[_c('span',[_v("git config user.name\n")])])]),_c('p',[_v("To set the author name to the value you want (e.g., to set it to your GitHub username) for your current git repository, you can use the following command ("),_c('a',{attrs:{"href":"https://www.git-tower.com/learn/git/faq/change-author-name-email"}},[_v("more info")]),_v("):")]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"no-line-numbers hljs"}},[_c('span',[_v("git config user.name \"YOUR_AUTHOR_NAME”\n")])])]),_c('p',[_v("To set the author name to use a default value you want for future git repositories, you can use the following command:")]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"no-line-numbers hljs"}},[_c('span',[_v("git config --global user.name \"YOUR_AUTHOR_NAME”\n")])])]),_c('p',[_v("RepoSense expects the Git Author Name to be the same as author's username on the Git hosting platform (GitHub, GitLab, BitBucket). If an author's "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Git Author Name")]),_v(" is different from their username on the Git hosting platform, the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Git Author Name")]),_v(" needs to be specified in the standalone config file. If the author has more than one "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Git Author Name")]),_v(", multiple values can be entered too.")]),_v(" "),_c('box',{attrs:{"type":"warning","seamless":""}},[_c('p',[_v("Note: Symbols such as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("\"")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("!")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("/")]),_v(" etc. in your author name will be omitted, which may reduce the accuracy of the analysis if 2 names in the repository are approximately similar.")])])],1),_v(" "),_c('div',{attrs:{"id":"section-blurbs"}},[_c('h2',{attrs:{"id":"blurbs-md-2"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("blurbs.md")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#blurbs-md-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("You can optionally use "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("blurbs.md")]),_v(" to add blurbs in Markdown syntax for repository branches. These blurbs will be seen when grouping by "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repo/Branch")]),_v(". ("),_c('a',{attrs:{"href":"https://github.com/reposense/RepoSense/blob/master/docs/ug/blurbs.md"}},[_v("example")]),_v(")")]),_v(" "),_c('p',[_c('strong',[_v("Format")]),_v(":")]),_v(" "),_c('ul',[_c('li',[_v("First line in section: Link to the repository branch.")]),_v(" "),_c('li',[_v("Second line onwards: Blurb content.")]),_v(" "),_c('li',[_v("Delimiter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("")]),_v(". Everything on the line after the delimiter will be ignored.")])])])],1)])],1),_v(" "),_c('p')]),_v(" "),_c('p',[_c('span',{staticClass:"badge bg-dark bigger-level0"},[_v("Step 8")]),_v(" "),_c('strong',[_v("View the generated report:")])]),_v(" "),_c('ol',[_c('li',[_v("Go to the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Settings")]),_v(" page of your fork in GitHub.")]),_v(" "),_c('li',[_v("Under the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("GitHub Pages")]),_v(" section, look for "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Your site is published at [LINK]")]),_v(". It should look something like "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://[YOUR_GITHUB_ID].github.io/publish-RepoSense")]),_v(".\n"),_c('a',{attrs:{"href":"/RepoSense/images/publishingguide-githubsetting.jpg","target":"_self"}},[_c('img',{staticClass:"img-fluid",attrs:{"src":"/RepoSense/images/publishingguide-githubsetting.jpg","alt":"GitHub Setting","title":"GitHub Setting"}})])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("It takes a few minutes for report generation. Meanwhile, you can monitor the progress live at "),_c('a',{attrs:{"href":"https://travis-ci.org/dashboard/builds"}},[_v("Travis-CI's Builds")]),_v(".")])])],1),_v(" "),_c('h2',{attrs:{"id":"updating-the-report-2"}},[_v("Updating the report"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#updating-the-report-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_v("Manual:")]),_v(" Travis UI has a way for you to trigger a build, using which you can cause the report to be updated.")]),_v(" "),_c('ol',[_c('li',[_v("Go to "),_c('a',{attrs:{"href":"https://travis-ci.org/search/publish-RepoSense/"}},[_v("your fork in Travis-CI")]),_v(", click on "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("More options")]),_v(" on the right then "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Trigger build")]),_v(".")]),_v(" "),_c('li',[_v("In the pop up, click "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Trigger custom build")]),_v(".")])]),_v(" "),_c('p',[_c('strong',[_v("Automated:")]),_v(" "),_c('a',{attrs:{"href":"https://travis-ci.org/"}},[_v("Travis-CI")]),_v(" offers "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Cron Jobs")]),_v(" in intervals of daily, weekly or monthly.")]),_v(" "),_c('ol',[_c('li',[_v("Login to "),_c('a',{attrs:{"href":"https://travis-ci.org/"}},[_v("Travis-CI")]),_v(".")]),_v(" "),_c('li',[_v("Go to "),_c('a',{attrs:{"href":"https://travis-ci.org/search/publish-RepoSense/"}},[_v("your fork in Travis-CI")]),_v(", click on "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("More options")]),_v(" on the right then access "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Settings")]),_v(".")]),_v(" "),_c('li',[_v("Under "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Cron Jobs")]),_v(", choose "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("master")]),_v(" for "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Branch")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Always run")]),_v(" for "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Options")]),_v(" and pick an "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Interval")]),_v(" of your choice; then click "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Add")]),_v(".\n"),_c('a',{attrs:{"href":"/RepoSense/images/publishingguide-cronsetting.jpg","target":"_self"}},[_c('img',{staticClass:"img-fluid",attrs:{"src":"/RepoSense/images/publishingguide-cronsetting.jpg","alt":"Travis-CI Cron","title":"Travis-CI Cron"}})])])])])])],1),_v(" "),_c('p'),_v(" "),_c('div',{staticClass:"indented-level0"},[_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('span',[_c('span',{staticClass:"glyphicon glyphicon-log-in",attrs:{"aria-hidden":"true"}})]),_v(" Appendix: "),_c('strong',[_v("Using RepoSense with Netlify")])])]},proxy:true}])},[_v(" "),_c('div',[_c('h1',{staticClass:"display-4",attrs:{"id":"appendix-reposense-with-netlify"}},[_c('span',[_v("Appendix: RepoSense with Netlify")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#appendix-reposense-with-netlify","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{attrs:{"id":"section-setting-up"}},[_c('box',{attrs:{"type":"warning","seamless":""}},[_c('p',[_v("Note that Netlify has a low limit for free tier users (only 300 "),_c('em',[_v("build minutes")]),_v(" per month as at June 2020 -- a single report generation can take 2-3 build minutes, longer if your report includes many/big repositories).")])]),_v(" "),_c('h2',{attrs:{"id":"setting-up-3"}},[_v("Setting up"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#setting-up-3","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('span',{staticClass:"badge bg-dark bigger-level0"},[_v("Step 1")]),_v(" "),_c('strong',[_v("Fork the "),_c('em',[_v("publish-RepoSense")]),_v(" repository")]),_v(" using this "),_c('a',{attrs:{"href":"https://github.com/RepoSense/publish-RepoSense/fork"}},[_v("link")]),_v(". Optionally, you can rename the fork to match your RepoSense report e.g., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("project-code-dashboard")]),_v(".")]),_v(" "),_c('p',[_c('span',{staticClass:"badge bg-dark bigger-level0"},[_v("Step 2")]),_v(" "),_c('strong',[_v("Set up Netlify for your fork")]),_v(" as described in this "),_c('a',{attrs:{"href":"https://www.netlify.com/blog/2016/09/29/a-step-by-step-guide-deploying-on-netlify/"}},[_v("guide")]),_v("."),_c('br'),_v(" "),_c('mark',[_v("You will need to use the following in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Step 5: Configure Your Settings")]),_v(" of that guide")]),_v(":")]),_v(" "),_c('ul',[_c('li',[_v("build command: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("pip install requests && ./run.sh")]),_c('br')]),_v(" "),_c('li',[_v("publish directory: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./reposense-report")])])]),_v(" "),_c('p',[_v("After Netlify finishes building the site, you should be able to see a dummy report at the URL of your Netlify site.")]),_v(" "),_c('p',[_c('span',{staticClass:"badge bg-dark bigger-level0"},[_v("Step 3")]),_v(" "),_c('strong',[_v("Generate the report you want")]),_v(" by updating the settings in your fork.")]),_v(" "),_c('ol',[_c('li',[_v("Go to the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("run.sh")]),_v(" file of your fork (on GitHub).")]),_v(" "),_c('li',[_v("Update the last line (i.e., the command for running RepoSense) to match the report you want to generate:"),_c('br'),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar --repos FULL_REPO_URL")]),_v(" (assuming you want to generate a default report for just one repo)"),_c('br'),_v("\ne.g., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar --repos https://github.com/reposense/RepoSense.git")]),_v(" ("),_c('mark',[_v("note the .git at the end of the repo URL")]),_v(")")]),_v(" "),_c('li',[_v("Commit the file. This will trigger Netlify to rebuild the report.")]),_v(" "),_c('li',[_v("Go to the URL of your Netlify site to see the updated RepoSense report (it might take about 2-5 minutes for Netlify to generate the report).")])])],1),_v(" "),_c('div',{attrs:{"id":"section-pr-previews"}},[_c('h2',{attrs:{"id":"pr-previews"}},[_v("PR previews"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#pr-previews","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("After setting up Netlify for your repo containing RepoSense settings, when a PR comes in to that repo to update any setting, you can scroll down the PR page and in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("All checks have passed")]),_v(", click on the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Details")]),_v(" beside "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("deploy/netlify — Deploy preview ready!")]),_v(" to see a preview of the report as per the changes in the PR.\n"),_c('a',{attrs:{"href":"/RepoSense/images/publishingguide-netlifypreview.png","target":"_self"}},[_c('img',{staticClass:"img-fluid",attrs:{"src":"/RepoSense/images/publishingguide-netlifypreview.png","alt":"Netlify Preview","title":"Netlify Preview"}})])])]),_v(" "),_c('h2',{attrs:{"id":"updating-the-report-3"}},[_v("Updating the report"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#updating-the-report-3","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_v("Manual:")]),_v(" Netlify UI has a way for you to trigger a build, using which you can cause the report to be updated.")]),_v(" "),_c('p',[_c('strong',[_v("Automated:")]),_v(" Netlify's can be set up to update the report whenever a target repo of your report is updated, provided you are able to update the target repos in a certain way.")]),_v(" "),_c('ol',[_c('li',[_c('p',[_v("Click on "),_c('strong',[_v("Settings")]),_v(" in the top, choose "),_c('strong',[_v("Build & deploy")]),_v(" from the left panel and scroll to "),_c('strong',[_v("Build hooks")]),_v(".\n"),_c('a',{attrs:{"href":"/RepoSense/images/using-netlify-build-hooks.png","target":"_self"}},[_c('img',{staticClass:"img-fluid",attrs:{"src":"/RepoSense/images/using-netlify-build-hooks.png","alt":"Build hooks"}})])])]),_v(" "),_c('li',[_c('p',[_v("Click "),_c('strong',[_v("Add build hook")]),_v(", give your webhook a name, and choose the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("master")]),_v(" branch to build. A Netlify URL will be generated.")])]),_v(" "),_c('li',[_c('p',[_v("Go to your target repository (the repository you want to analyze) and click on "),_c('strong',[_v("Settings")]),_v(".")])]),_v(" "),_c('li',[_c('p',[_v("Select "),_c('strong',[_v("Webhooks")]),_v(" on left panel and click on "),_c('strong',[_v("Add webhook")]),_v(".\n"),_c('a',{attrs:{"href":"/RepoSense/images/using-netlify-add-hook.png","target":"_self"}},[_c('img',{staticClass:"img-fluid",attrs:{"src":"/RepoSense/images/using-netlify-add-hook.png","alt":"Add webhook"}})])])]),_v(" "),_c('li',[_c('p',[_v("Copy the Netlify URL and paste it in the URL form field.\n"),_c('a',{attrs:{"href":"/RepoSense/images/using-netlify-url.png","target":"_self"}},[_c('img',{staticClass:"img-fluid",attrs:{"src":"/RepoSense/images/using-netlify-url.png","alt":"Webhook url"}})])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Note: Although the build url is not that secretive, it should be kept safe to prevent any misuse.")])])],1),_v(" "),_c('li',[_c('p',[_v("Select "),_c('strong',[_v("application.json")]),_v(" as content type.")])]),_v(" "),_c('li',[_c('p',[_v("Select "),_c('strong',[_v("Let me select individual events")]),_v(" and based on your requirements check the checkboxes.")])]),_v(" "),_c('li',[_c('p',[_v("Leave the "),_c('strong',[_v("Active")]),_v(" checkbox checked.")])]),_v(" "),_c('li',[_c('p',[_v("Click on "),_c('strong',[_v("Add webhook")]),_v(" to save the webhook and add it.")])])])])])],1),_v(" "),_c('p'),_v(" "),_m(8),_v(" "),_m(9),_v(" "),_c('p',[_v("A sample iframe would look like:")]),_v(" "),_m(10),_c('p',[_v("Adjust the width and height to the desired dimensions as required.")])])],1),_v(" "),_m(11)])} +with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"fixed":""}},[_c('navbar',{attrs:{"type":"dark"},scopedSlots:_u([{key:"brand",fn:function(){return [_c('a',{staticClass:"navbar-brand",attrs:{"href":"/index.html","title":"Home"}},[_c('img',{attrs:{"width":"30px","src":"/favicon.ico"}})])]},proxy:true},{key:"right",fn:function(){return [_c('li',[_c('form',{staticClass:"navbar-form"},[_c('searchbar',{attrs:{"data":searchData,"placeholder":"Search","on-hit":searchCallback,"menu-align-right":""}})],1)])]},proxy:true}])},[_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/index.html"}},[_v("HOME")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/showcase.html"}},[_v("SHOWCASE")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/ug/index.html"}},[_v("USER GUIDE")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/dg/index.html"}},[_v("DEVELOPER GUIDE")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/about.html"}},[_v("ABOUT")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/contact.html"}},[_v("CONTACT")])]),_v(" "),_c('li',{attrs:{"tags":"dev"}},[_c('a',{staticClass:"nav-link",attrs:{"href":"https://reposense.org","target":"_blank"}},[_c('span',[_c('span',{staticClass:"fas fa-external-link-alt",attrs:{"aria-hidden":"true"}}),_v(" PRODUCTION SITE")])])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"https://github.com/RepoSense/reposense","target":"_blank"}},[_c('span',[_c('span',{staticClass:"fab fa-github",attrs:{"aria-hidden":"true"}})])])])]),_v(" "),_m(0)],1),_v(" "),_c('div',{attrs:{"id":"flex-body"}},[_c('overlay-source',{staticClass:"fixed-header-padding",attrs:{"id":"site-nav","tag-name":"nav","to":"site-nav"}},[_c('div',{staticClass:"site-nav-top"},[_c('div',{staticClass:"font-weight-bold mb-2",staticStyle:{"font-size":"1.25rem"}},[_c('span',[_c('strong',[_c('strong',[_v("USER GUIDE")])])])])]),_v(" "),_c('div',{staticClass:"nav-component slim-scroll"},[_c('div',[_c('site-nav',[_c('overlay-source',{staticClass:"site-nav-list site-nav-list-root",attrs:{"tag-name":"ul","to":"mb-site-nav"}},[_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/index.html"}},[_c('strong',[_v("Overview")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/generatingReports.html"}},[_c('strong',[_v("Generating reports")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/usingReports.html"}},[_c('strong',[_v("Using reports")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/customizingReports.html"}},[_c('strong',[_v("Customizing reports")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/sharingReports.html"}},[_c('strong',[_v("Sharing reports")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('strong',[_v("Appendices")]),_v(" "),_c('div',{staticClass:"site-nav-dropdown-btn-container"},[_c('i',{staticClass:"site-nav-dropdown-btn-icon site-nav-rotate-icon",attrs:{"onclick":"handleSiteNavClick(this.parentNode.parentNode, false); event.stopPropagation();"}},[_c('span',{staticClass:"glyphicon glyphicon-menu-down",attrs:{"aria-hidden":"true"}})])])]),_c('ul',{staticClass:"site-nav-dropdown-container site-nav-dropdown-container-open site-nav-list"},[_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/cli.html"}},[_v("CLI syntax reference")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/configFiles.html"}},[_v("Config files format")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/authorConfigSyntax.html"}},[_v("Advanced syntax: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/usingAuthorTags.html"}},[_v("Using "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("@@author")]),_v(" tags")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/withNetlify.html"}},[_v("RepoSense with Netlify")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/withGithubActions.html"}},[_v("RepoSense with GitHub Actions")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/withTravis.html"}},[_v("RepoSense with Travis")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/runSh.html"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("run.sh")]),_v(" format")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/faq.html"}},[_v("FAQ")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/troubleshooting.html"}},[_v("Troubleshooting")])])])])])])],1)],1)])]),_v(" "),_c('div',{staticClass:"fixed-header-padding",attrs:{"id":"content-wrapper"}},[_m(1),_v(" "),_m(2),_v(" "),_c('p',[_v("The sections below explain various ways of sharing a RepoSense report.")]),_v(" "),_m(3),_v(" "),_m(4),_v(" "),_m(5),_v(" "),_m(6),_v(" "),_m(7),_v(" "),_c('div',{staticClass:"indented-level0"},[_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('span',[_c('span',{staticClass:"glyphicon glyphicon-log-in",attrs:{"aria-hidden":"true"}})]),_v(" Appendix: "),_c('strong',[_v("Using RepoSense with GitHub Actions")])])]},proxy:true}])},[_v(" "),_c('div',[_c('h1',{staticClass:"display-4",attrs:{"id":"appendix-reposense-with-github-actions"}},[_c('span',[_v("Appendix: RepoSense with GitHub Actions")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#appendix-reposense-with-github-actions","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{attrs:{"id":"section-setting-up"}},[_c('div',{staticClass:"lead"},[_c('p',[_v("You can use "),_c('a',{attrs:{"href":"https://github.com/features/actions"}},[_c('em',[_v("GitHub Actions")])]),_v(" (together with other GitHub tools) to automate the generating and publishing of RepoSense reports.")])]),_v(" "),_c('h2',{attrs:{"id":"setting-up"}},[_v("Setting up"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#setting-up","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',[_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("The instructions below assume you are using GitHub pages to host your report.")])]),_v(" "),_c('p',[_c('span',{staticClass:"badge bg-dark bigger-level0"},[_v("Step 1")]),_v(" "),_c('strong',[_v("Fork the "),_c('em',[_v("publish-RepoSense")]),_v(" repository")]),_v(" using this "),_c('a',{attrs:{"href":"https://github.com/RepoSense/publish-RepoSense/fork"}},[_v("link")]),_v(". Optionally, you can rename the fork to match your RepoSense report e.g., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("project-code-dashboard")]),_v(".")])],1),_v(" "),_c('p',[_c('span',{staticClass:"badge bg-dark bigger-level0"},[_v("Step 2")]),_v(" "),_c('strong',[_v("Activate GitHub Actions on the forked repository:")])]),_v(" "),_c('ol',[_c('li',[_v("Go to the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Actions")]),_v(" page of your fork of the "),_c('a',{attrs:{"href":"https://github.com/reposense/publish-RepoSense"}},[_v("publish-RepoSense")]),_v(" repo.")]),_v(" "),_c('li',[_v("Click on the green button that says "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("I understand my workflows, go ahead and enable them")]),_v(" to enable GitHub Actions on your new repository.")])]),_v(" "),_c('p',[_c('span',{staticClass:"badge bg-dark bigger-level0"},[_v("Step 3")]),_v(" "),_c('strong',[_v("Update report configuration:")])]),_v(" "),_c('div',[_c('p',[_v("In your fork, edit "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("run.sh")]),_v(" (and if applicable, "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("group-config.csv")]),_v(") to customize the command line parameters or repositories to be analyzed.")]),_v(" "),_c('div',{staticClass:"indented-level0"},[_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('span',[_c('span',{staticClass:"glyphicon glyphicon-log-in",attrs:{"aria-hidden":"true"}})]),_v(" Appendix: "),_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("run.sh")]),_v(" format")])])]},proxy:true}])},[_v(" "),_c('div',[_c('h1',{staticClass:"display-4",attrs:{"id":"appendix-run-sh-format"}},[_c('span',[_v("Appendix: run.sh format")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#appendix-run-sh-format","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{staticClass:"lead"},[_c('p',[_c('a',{attrs:{"href":"https://github.com/reposense/publish-RepoSense/blob/master/run.sh"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("run.sh")])]),_v(" is a script used for automating RepoSense report generation.")])]),_v(" "),_c('h3',{attrs:{"id":"customizing-the-reposense-command"}},[_v("Customizing the RepoSense command"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#customizing-the-reposense-command","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("You can update the RepoSense command (i.e., the last line) in the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("run.sh")]),_v(" to match your needs.")]),_v(" "),_c('div',{staticClass:"indented-level0"},[_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('span',[_c('span',{staticClass:"glyphicon glyphicon-log-in",attrs:{"aria-hidden":"true"}})]),_v(" Appendix: "),_c('strong',[_v("CLI syntax reference")])])]},proxy:true}])},[_v(" "),_c('div',[_c('h1',{staticClass:"display-4",attrs:{"id":"appendix-cli-syntax-reference"}},[_c('span',[_v("Appendix: CLI syntax reference")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#appendix-cli-syntax-reference","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{staticClass:"lead"},[_c('p',[_v("The command "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar")]),_v(" takes several flags.")])]),_v(" "),_c('box',[_c('p',[_c('strong',[_v("Examples")]),_v(":")]),_v(" "),_c('p',[_v("An example of a command using most parameters:"),_c('br'),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar --repos https://github.com/reposense/RepoSense.git --output ./report_folder --since 31/1/2017 --until 31/12/2018 --formats java adoc xml --view --ignore-standalone-config --last-modified-date --timezone UTC+08 --find-previous-authors --analyze-authorship --originality-threshold 0.66")])]),_v(" "),_c('p',[_v("Same command as above but using most parameters in alias format:"),_c('br'),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar -r https://github.com/reposense/RepoSense.git -o ./report_folder -s 31/1/2017 -u 31/12/2018 -f java adoc xml -v -i -l -t UTC+08 -F -A -ot 0.66")])])]),_v(" "),_c('p',[_v("The section below provides explanations for each of the flags.")]),_v(" "),_c('h3',{attrs:{"id":"analyze-authorship-a"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--analyze-authorship")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-A")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#analyze-authorship-a","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--analyze-authorship")])]),_v(": Performs further analysis to distinguish between partial and full credit attribution for\nlines of code assigned to the author.")]),_v(" "),_c('ul',[_c('li',[_v("Default: this feature is turned "),_c('em',[_c('strong',[_v("off")])]),_v(" by default and the author will receive partial credits for all lines of\ncode, as the code lines are at least partial credit but may not qualify for full credit.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-A")]),_v(" (upper case)")]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--analyze-authorship")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-A")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("A darker background colour represents full credit, while a lighter background colour represents partial credit.")]),_v(" "),_c('p',[_v("If the code is attributed to a different author by the user via "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("@@author")]),_v(" tag, then the new author will be given\npartial credit.")])]),_v(" "),_c('h3',{attrs:{"id":"assets-a"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--assets")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-a")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#assets-a","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{attrs:{"id":"section-assets"}},[_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--assets ASSETS_DIRECTORY")])]),_v(": Specifies where to place assets for report generation.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ASSETS_DIRECTORY")]),_v(" The directory containing the assets files. A "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("favicon.ico")]),_v(" file can be placed here to customize the favicon of the dashboard, while a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("title.md")]),_v(" file can be placed to customize the "),_c('a',{attrs:{"href":"https://reposense.org/ug/customizingReports.html#add-a-title"}},[_v("title")]),_v(" of the report using "),_c('a',{attrs:{"href":"https://www.markdownguide.org/basic-syntax/"}},[_v("Markdown syntax")]),_v(".")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-a")])]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--assets ./assets")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-a ./assets")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("If "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--assets")]),_v(" is not specified, RepoSense looks for assets in the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./assets")]),_v(" directory.")])])])],1),_v(" "),_c('h3',{attrs:{"id":"config-c"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--config")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-c")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#config-c","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{attrs:{"id":"section-config"}},[_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--config CONFIG_DIRECTORY")])]),_v(": Specifies that config files located in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("CONFIG_DIRECTORY")]),_v(" should be used to customize the report.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("CONFIG_DIRECTORY")]),_v(" The directory containing the config files. Should contain a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(" file. Optionally, can contain an "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(" file or/and a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("group-config.csv")]),_v(" file or/and a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("report-config.json")]),_v(" file or/and a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("blurbs.md")]),_v(" file.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-c")])]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar --config ./config")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("Cannot be used with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repos")]),_v(". The "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repos")]),_v(" flag will take precedence over this flag.")]),_v(" "),_c('li',[_v("If both "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repos")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--config")]),_v(" are not specified, RepoSense looks for config files in the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./config")]),_v(" directory.")]),_v(" "),_c('li',[_v("Config files must follow "),_c('a',{attrs:{"href":"/RepoSense/ug/configFiles.html"}},[_v("this")]),_v(" format.")])])])],1),_v(" "),_c('h3',{attrs:{"id":"formats-f"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--formats")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-f")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#formats-f","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--formats LIST_OF_FORMATS")])]),_v(": Specifies which file extensions to be included in the analysis.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("LIST_OF_FORMATS")]),_v(" A space-separated list of file extensions that should be included in the analysis."),_c('br'),_v("\nDefault: all file formats")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-f")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--formats css fxml gradle")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-f css fxml gradle")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Binary file formats, such as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("jpg")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("png")]),_v(","),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("exe")]),_v(","),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("zip")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("rar")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("docx")]),_v(", and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("pptx")]),_v(", all will be labelled as the file type "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("binary")]),_v(" in the generated report.")])]),_v(" "),_c('h3',{attrs:{"id":"find-previous-authors-f"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--find-previous-authors")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-F")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#find-previous-authors-f","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--find-previous-authors")])]),_v(": Utilizes Git blame's ignore revisions functionality, RepoSense will attempt to blame the line changes caused by commits in the ignore commit list to the previous authors who altered those lines (if available).")]),_v(" "),_c('ul',[_c('li',[_v("Default: RepoSense will assume that no authors are responsible for the code changes in the lines altered by commits in the ignore commit list.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-F")]),_v(" (uppercase F)")]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--find-previous-authors")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-F")])])]),_v(" "),_c('h3',{attrs:{"id":"help-h"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--help")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-h")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#help-h","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--help")])]),_v(": Shows the help message.")]),_v(" "),_c('ul',[_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-h")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Cannot be used with any other flags. This flag takes precedence over all other flags.")])]),_v(" "),_c('h3',{attrs:{"id":"ignore-standalone-config-i"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--ignore-standalone-config")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-i")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#ignore-standalone-config-i","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--ignore-standalone-config")])]),_v(": Specifies that the standalone config file in the repo should be ignored.")]),_v(" "),_c('ul',[_c('li',[_v("Default: the standalone config file is not ignored")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-i")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--ignore-standalone-config")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-i")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("This flag overrides the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Ignore standalone config")]),_v(" field in the CSV config file.")])]),_v(" "),_c('h3',{attrs:{"id":"ignore-filesize-limit-i"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--ignore-filesize-limit")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-I")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#ignore-filesize-limit-i","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--ignore-filesize-limit")])]),_v(": Specifies that the file size limit (both default and user-defined) should be ignored during the analysis.")]),_v(" "),_c('ul',[_c('li',[_v("Default: the file size limit is not ignored")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-I")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--ignore-filesize-limit")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-I")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("All files are subject to a default file size limit or a custom size limit set by the user. Most files should not be\naffected by the default size limit. This flag can be useful for including files in your report that are affected by\nthe size limit. Note that this flag may result in large report sizes and/or slower report generation.")])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("This flag overrides the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Ignore file size limit")]),_v(" field in the CSV config file.")])]),_v(" "),_c('h3',{attrs:{"id":"last-modified-date-l"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--last-modified-date")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-l")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#last-modified-date-l","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--last-modified-date")])]),_v(": Specifies that the last modified date of each line of code should be added to "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("authorship.json")]),_v(".")]),_v(" "),_c('ul',[_c('li',[_v("Default: the last modified date of each line of code will not be added to "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("authorship.json")])]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-l")]),_v(" (lowercase L)")]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--last-modified-date")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-l")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("Cannot be used with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--shallow-cloning")]),_v(". This may result in an incorrect last modified date.")]),_v(" "),_c('li',[_v("The last modified dates will be in the same timezone specified with the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--timezone")]),_v(" flag.")])])]),_v(" "),_c('h3',{attrs:{"id":"originality-threshold-ot"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--originality-threshold")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-ot")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#originality-threshold-ot","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--originality-threshold [VALUE]")])]),_v(": Specifies the cut-off point for partial and full credit\nin "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--analyze-authorship")]),_v(". Author will be given full credit if their contribution exceeds this threshold, else partial\ncredit is given.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("VALUE")]),_v(" Optional. Acceptable range: [0.0, 1.0]."),_c('br'),_v("\nDefault: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("0.51")])]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-ot")])]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--originality-threshold 0.66")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-ot 0.66")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("Requires "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--analyze-authorship")]),_v(" flag.")]),_v(" "),_c('li',[_v("An author's contribution, or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("originality score")]),_v(", is calculated using Levenshtein Distance (Edit Distance) algorithm.\nWe compare the difference between current code line and its previous versions.")])])]),_v(" "),_c('h3',{attrs:{"id":"output-o"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--output")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-o")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#output-o","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--output OUTPUT_DIRECTORY")])]),_v(": Indicates where to save the report generated.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("OUTPUT_DIRECTORY")]),_v(" The location for the generated "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("reposense-report")]),_v(" folder."),_c('br'),_v("\nDefault: current directory")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-o")])]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--output ./foo")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-o ./foo")]),_v(" (the report will be in the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./foo/reposense-report")]),_v(" folder)")])]),_v(" "),_c('h3',{attrs:{"id":"period-p"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--period")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-p")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#period-p","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--period PERIOD")])]),_v(": Specifies the period of analysis window.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("PERIOD")]),_v(" The period of analysis window, in the format "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("nd")]),_v(" (for n days) or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("nw")]),_v(" (for n weeks). It is used to calculate end date if only start date is specified, or calculate end date if only start date is specified.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-p")])]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--period 30d")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--period 4w")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("If both start date and end date are not specified, the date of generating the report will be taken as the end date.")]),_v(" "),_c('li',[_v("May analyze the incorrect date range if used with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since d1")]),_v(". The program will throw a warning.")]),_v(" "),_c('li',[_v("Cannot be used with both "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--until")]),_v(". The program will throw an exception.")])])]),_v(" "),_c('h3',{attrs:{"id":"repo-repos-r"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repo")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repos")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-r")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#repo-repos-r","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repo REPO_LOCATION")])]),_v(": Specifies which repositories to analyze.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("REPO_LOCATION")]),_v(" A list of URLs or the disk location of the git repositories to analyze, separated by spaces.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-r")])]),_v(" "),_c('li',[_v("Examples:\n"),_c('ul',[_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repos https://github.com/reposense/RepoSense.git")])]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repo https://github.com/reposense/RepoSense.git c:/myRepose/foo/bar")]),_v(": analyzes the two specified repos (one remote, one local) and generates one report containing details of both.")])])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Cannot be used with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--config")]),_v(". This flag takes precedence over "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--config")]),_v(".")])]),_v(" "),_c('h3',{attrs:{"id":"shallow-cloning-s"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--shallow-cloning")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-S")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#shallow-cloning-s","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--shallow-cloning")])]),_v(": Clones repositories using Git's shallow cloning functionality, which can significantly reduce the time taken to clone large repositories. However, the flag should not be used for smaller repositories where the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(".git")]),_v(" file is smaller than 500 MB, as it would create overhead.")]),_v(" "),_c('ul',[_c('li',[_v("Default: RepoSense does not clone repositories using Git's shallow cloning functionality.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-S")]),_v(" (uppercase S)")]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--shallow-cloning")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-S")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Cannot be used with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--last-modified-date")]),_v(". This may result in an incorrect last modified date.")])]),_v(" "),_c('h3',{attrs:{"id":"since-s"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-s")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#since-s","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since START_DATE")])]),_v(": Specifies the start date for the period to be analyzed.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("START_DATE")]),_v(" The first day of the period to be analyzed, in the format "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("DD/MM/YYYY")]),_v("."),_c('br'),_v("\nDefault: one month before the current date")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-s")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since 21/10/2017")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-s 21/10/2017")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("If the start date is not specified, only commits made one month before the end date (if specified) or the date of generating the report, will be captured and analyzed.")]),_v(" "),_c('li',[_v("If "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("d1")]),_v(" is specified as the start date ("),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since d1")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-s d1")]),_v("), then the program will search for the earliest commit date of all repositories and use that as the start date.")]),_v(" "),_c('li',[_v("If "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("d1")]),_v(" is specified together with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--period")]),_v(", then the program will warn that the date range being analyzed may be incorrect.")])])]),_v(" "),_c('h3',{attrs:{"id":"timezone-t"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--timezone")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-t")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#timezone-t","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--timezone ZONE_ID")])]),_v(": Indicates the timezone to be used for the analysis.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ZONE_ID")]),_v(" The timezone in the format "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ZONE_ID[±hh[mm]]")]),_v("."),_c('br'),_v("\nDefault: system's default timezone")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-t")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--timezone UTC+08")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-t UTC-1030")])])]),_v(" "),_c('h3',{attrs:{"id":"until-u"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--until")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-u")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#until-u","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--until END_DATE")])]),_v(": Specifies the end date of the analysis period.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("END_DATE")]),_v(" The last date of the period to be analyzed, in the format "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("DD/MM/YYYY")]),_v("."),_c('br'),_v("\nDefault: current date")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-u")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--until 21/10/2017")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-u 21/10/2017")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Note: If the end date is not specified, the date of generating the report will be taken as the end date.")])]),_v(" "),_c('h3',{attrs:{"id":"version-v"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--version")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-V")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#version-v","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--version")])]),_v(": Shows the version of RepoSense.")]),_v(" "),_c('ul',[_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-V")]),_v(" (upper case)")])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Cannot be used with any other flags. This flag takes precedence over all other flags other than "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--help")]),_v(".")])]),_v(" "),_c('h3',{attrs:{"id":"view-v"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--view")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-v")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#view-v","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--view [REPORT_FOLDER]")])]),_v(": Specifies that the report should be opened in the default browser.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("REPORT_FOLDER")]),_v(" Optional. If specified, no analysis will be performed and the report specified by the argument will be opened."),_c('br'),_v("\nDefault: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./reposense-report")])]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-v")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--view")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-v")])])])],1)])],1),_v(" "),_c('p'),_v(" "),_c('h3',{attrs:{"id":"specifying-which-version-of-reposense-to-use"}},[_v("Specifying which version of RepoSense to use"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#specifying-which-version-of-reposense-to-use","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Depending on which version you wish to use for report generation, add one of the following flags to the line "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./get-reposense.py")]),_v(" in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("run.sh")]),_v(" (e.g., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./get-reposense.py --release")]),_v("):")]),_v(" "),_c('ul',[_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--release")]),_v(": Use the latest release (Stable)")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--master")]),_v(": Use the latest version of the master branch")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--tag TAG")]),_v(" (e.g. "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--tag v1.6.1")]),_v("): Use the version identified by the Git tag given")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--commit COMMIT")]),_v(" (e.g. "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--commit abc123")]),_v("): Use the version identified by the Git commit SHA given")])])])])],1),_v(" "),_c('p'),_v(" "),_c('div',{staticClass:"indented-level0"},[_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('span',[_c('span',{staticClass:"glyphicon glyphicon-log-in",attrs:{"aria-hidden":"true"}})]),_v(" Appendix: "),_c('strong',[_v("Config files format")])])]},proxy:true}])},[_v(" "),_c('div',[_c('h1',{staticClass:"display-4",attrs:{"id":"appendix-config-files-format"}},[_c('span',[_v("Appendix: Config files format")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#appendix-config-files-format","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{staticClass:"lead"},[_c('p',[_v("Given below are the details of the various config files used by RepoSense.")])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_c('strong',[_v("RepoSense ignores the order of column headers in the CSV config files. However, the spelling of the column headers must match the specified headers exactly, or the column would be ignored by RepoSense.")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_c('strong',[_v("A value in a config file is optional to provide unless it is specified as "),_c('span',{staticClass:"badge bg-danger"},[_v("mandatory")])]),_v(".")])]),_v(" "),_c('h2',{attrs:{"id":"repo-config-csv"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#repo-config-csv","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(" file contains repo-level config data.")]),_v(" Each row represents a repository's configuration ("),_c('a',{attrs:{"href":"/RepoSense/ug/repo-config.csv"}},[_v("example")]),_v(").")]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Column Name")]),_v(" "),_c('th',[_v("Explanation")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_v("Repository's Location "),_c('span',{staticClass:"badge bg-danger"},[_v("mandatory")])]),_v(" "),_c('td',[_v("The "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Remote Repo URL")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Disk Path")]),_v(" to the git repository e.g., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://github.com/foo/bar.git")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("C:\\Users\\user\\Desktop\\GitHub\\foo\\bar")])])]),_v(" "),_c('tr',[_c('td',[_v("Branch")]),_v(" "),_c('td',[_v("The branch to analyze in the target repository e.g., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("master")]),_v(". Default: the default branch of the repo")])]),_v(" "),_c('tr',[_c('td',[_v("File formats"),_c('sup',[_v("*+")])]),_v(" "),_c('td',[_v("The file extensions to analyze. Binary file formats, such as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("png")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("jpg")]),_v(", will be automatically labelled as the file type "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("binary")]),_v(" in the generated report. Default: all file formats")])]),_v(" "),_c('tr',[_c('td',[_v("Find Previous Authors")]),_v(" "),_c('td',[_v("Enter "),_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("yes")])]),_v(" to utilize Git blame's ignore revisions functionality, RepoSense will attempt to blame the line changes caused by commits in the ignore commit list to the previous authors who altered those lines (if available).")])]),_v(" "),_c('tr',[_c('td',[_v("Ignore Glob List"),_c('sup',[_v("*+")])]),_v(" "),_c('td',[_v("The list of file path globs to ignore during analysis for each author e.g., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("test/**;temp/**")]),_v(". Refer to the "),_c('a',{attrs:{"href":"https://docs.oracle.com/javase/tutorial/essential/io/fileOps.html#glob"}},[_c('em',[_v("glob format")])]),_v(" for the path glob syntax.")])]),_v(" "),_c('tr',[_c('td',[_v("Ignore standalone config")]),_v(" "),_c('td',[_v("To ignore the standalone config file (if any) in target repository, enter "),_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("yes")])]),_v(". If the cell is empty, the standalone config file in the repo (if any) will take precedence over configurations provided in the csv files.")])]),_v(" "),_c('tr',[_c('td',[_v("Ignore Commits List"),_c('sup',[_v("*+")])]),_v(" "),_c('td',[_v("The list of commits to ignore during analysis. For accurate results, the commits should be provided with their full hash. Additionally, a range of commits can be specified using the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("..")]),_v(" notation e.g. "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("abc123..def456")]),_v(" (both inclusive).")])]),_v(" "),_c('tr',[_c('td',[_v("Ignore Authors List"),_c('sup',[_v("*+")])]),_v(" "),_c('td',[_v("The list of authors to ignore during analysis. Authors should be specified by their "),_c('a',{attrs:{"href":"#a-note-about-git-author-name"}},[_v("Git Author Name")]),_v(".")])]),_v(" "),_c('tr',[_c('td',[_v("Shallow Cloning")]),_v(" "),_c('td',[_v("Enter "),_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("yes")])]),_v(" to clone the repository using Git's shallow cloning functionality. This option can significantly reduce the time taken to clone large repositories. However, the option should ideally be disabled for smaller repositories where the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(".git")]),_v(" file is smaller than 500 MB, as it would create overhead.")])]),_v(" "),_c('tr',[_c('td',[_v("File Size Limit"),_c('sup',[_v("+")])]),_v(" "),_c('td',[_v("Enter a file size limit for the repository in bytes as a single number without units (for a size limit of 1MB for example, enter 1000000). This file size limit will override the default file size limit (500KB). Files exceeding the file size limit will be marked as ignored and only the file name and line count will be reflected in the report.")])]),_v(" "),_c('tr',[_c('td',[_v("Ignore File Size Limit")]),_v(" "),_c('td',[_v("Enter "),_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("yes")])]),_v(" to ignore both the default file size limit and the file size limit possibly set by the user in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(".")])]),_v(" "),_c('tr',[_c('td',[_v("Skip Ignored File Analysis")]),_v(" "),_c('td',[_v("Enter "),_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("yes")])]),_v(" to ignore analysis of files exceeding the file size limit entirely. If file analysis is skipped, all information about the file will be omitted from the generated report. This option can significantly improve report generation time.")])])])])]),_c('box',{attrs:{"type":"info","seamless":""}},[_v("\nThe Shallow Cloning option is incompatible with the \"--last-modified-date\" CLI flag.\n")]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_v("\nIf Ignore File Size Limit is yes, the File Size Limit and Skip Ignored File Analysis columns are ignored.\n")]),_v(" "),_c('p',[_c('sup',[_v("* "),_c('strong',[_v("Multi-value column")]),_v(": multiple values can be entered in this column using a semicolon "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(";")]),_v(" as the separator.")]),_c('br'),_v(" "),_c('sup',[_v("+ "),_c('strong',[_v("Overrideable column")]),_v(": prepend with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("override:")]),_v(" to use entered value(s) instead of value(s) from standalone config.")])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("When using "),_c('a',{attrs:{"href":"#config-json-standalone-config-file"}},[_v("standalone config")]),_v(" (if it is not ignored), it is possible to override specific values from the standalone config by prepending the entered value with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("override:")]),_v(".")])]),_v(" "),_c('h2',{attrs:{"id":"author-config-csv"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#author-config-csv","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Optionally, you can use an "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(" (which should be in the same directory as the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(" file) to provide more details about the authors to analyze ("),_c('a',{attrs:{"href":"/RepoSense/ug/author-config.csv"}},[_v("example")]),_v("). It should contain the following columns:")]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Column Name")]),_v(" "),_c('th',[_v("Explanation")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_v("Repository's Location"),_c('sup',[_v("*")])]),_v(" "),_c('td',[_v("Same as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(". Default: all the repos in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(".")])]),_v(" "),_c('tr',[_c('td',[_v("Branch")]),_v(" "),_c('td',[_v("The branch to analyze for this author, e.g., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("master")]),_v(". Default: the author will be bound to all the repos in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(" that has the same repo's location, regardless of branch.")])]),_v(" "),_c('tr',[_c('td',[_v("Author's Git Host ID"),_c('sup',[_v("#")]),_v(" "),_c('span',{staticClass:"badge bg-danger"},[_v("mandatory")])]),_v(" "),_c('td',[_v("Username of the target author's profile on GitHub, GitLab or Bitbucket, e.g."),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("JohnDoe")]),_v(".")])]),_v(" "),_c('tr',[_c('td',[_v("Author's Emails"),_c('sup',[_v("*")])]),_v(" "),_c('td',[_v("Associated emails of the author. For GitHub users, this can be found in your "),_c('a',{attrs:{"href":"https://github.com/settings/emails"}},[_v("GitHub settings")]),_v(".")])]),_v(" "),_c('tr',[_c('td',[_v("Author's Display Name")]),_v(" "),_c('td',[_v("The name to display for the author. Default: author's username.")])]),_v(" "),_c('tr',[_c('td',[_v("Author's Git Author Name"),_c('sup',[_v("*")])]),_v(" "),_c('td',[_v("The meaning of "),_c('em',[_v("Git Author Name")]),_v(" is explained in "),_c('a',{attrs:{"href":"#a-note-about-git-author-name"}},[_c('em',[_v("A note about git author name")])]),_v(".")])]),_v(" "),_c('tr',[_c('td',[_v("Ignore Glob List"),_c('sup',[_v("*")])]),_v(" "),_c('td',[_v("Files to ignore for this author, in addition to files ignored by the patterns specified in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(". The path glob syntax is the same as that of Ignore Glob List in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(".")])])])])]),_c('p',[_c('sup',[_v("* "),_c('strong',[_v("Multi-value column")]),_v(": multiple values can be entered in this column using a semicolon "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(";")]),_v(" as the separator.")]),_v(" "),_c('br'),_v(" "),_c('sup',[_v("# For backward compatibility, "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Author's GitHub ID")]),_v(" is still accepted as the header in place of "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Author's Git Host ID")]),_v(".")])]),_v(" "),_c('p',[_v("If "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(" is not given and the repo has not provided author details in a standalone config file, all the authors of the repositories within the date range specified (if any) will be analyzed.")]),_v(" "),_c('p',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(" has some advanced syntax that can help to reduce duplication of the author's information. The syntax guide is given below:")]),_v(" "),_c('div',{staticClass:"indented-level0"},[_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('span',[_c('span',{staticClass:"glyphicon glyphicon-log-in",attrs:{"aria-hidden":"true"}})]),_v(" Appendix: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(" advanced syntax")])]},proxy:true}])},[_v(" "),_c('div',[_c('h1',{staticClass:"display-4",attrs:{"id":"appendix-author-config-csv-advanced-syntax"}},[_c('span',[_v("Appendix: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(" advanced syntax")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#appendix-author-config-csv-advanced-syntax","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{staticClass:"lead"},[_c('p',[_v("Given below are the advanced syntax available for "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(".")])]),_v(" "),_c('h2',{attrs:{"id":"multiple-repository-s-location-per-author"}},[_v("Multiple "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repository's Location")]),_v(" per author"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#multiple-repository-s-location-per-author","onclick":"event.stopPropagation()"}})]),_v(" "),_c('h4',{attrs:{"id":"specifying-multiple-repository-s-location"}},[_v("Specifying multiple "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repository's Location")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#specifying-multiple-repository-s-location","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("To specify multiple "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repository's Location")]),_v(" in a single row, we can use a semicolon "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(";")]),_v(" as a separator.")]),_v(" "),_c('p',[_v("Below is an example:")]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Repository's Location")]),_v(" "),_c('th',[_v("Branch")]),_v(" "),_c('th',[_v("Author's Git Host ID")]),_v(" "),_c('th',[_v("... Hidden columns")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://github.com/reposense/RepoSense.git;https://github.com/MarkBind/markbind.git")])]),_v(" "),_c('td',[_v("master")]),_v(" "),_c('td',[_v("sikai00")]),_v(" "),_c('td',[_v("--")])])])])]),_c('p',[_v("We have now furnished author details for both repositories in a single row, instead of having two individual rows per "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repository's Location")]),_v(".")]),_v(" "),_c('br'),_v(" "),_c('h4',{attrs:{"id":"specifying-repository-s-location-with-one-or-more-specific-branches"}},[_v("Specifying "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repository's Location")]),_v(" with one or more specific branches"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#specifying-repository-s-location-with-one-or-more-specific-branches","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("To list out one or more branches for a particular "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repository's Location")]),_v(", we can use a pipe "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("|")]),_v(" separator to demarcate the different branches.")]),_v(" "),_c('p',[_v("Below is an example:")]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Repository's Location")]),_v(" "),_c('th',[_v("Branch")]),_v(" "),_c('th',[_v("Author's Git Host ID")]),_v(" "),_c('th',[_v("... Hidden columns")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://github.com/reposense/RepoSense.git~master|release|cypress")])]),_v(" "),_c('td',[_v("master")]),_v(" "),_c('td',[_v("sikai00")]),_v(" "),_c('td',[_v("--")])])])])]),_c('p',[_v("We have now provided author details for three different branches in a single repo, using a single row.")]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("The branch specified through the delimiter syntax will take precedence over the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Branch")]),_v(" column.")])]),_v(" "),_c('h2',{attrs:{"id":"using-github-branch-url-as-repository-s-location"}},[_v("Using GitHub branch URL as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repository's Location")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#using-github-branch-url-as-repository-s-location","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("We can also use GitHub branch URL as copied from the address bar directly, to be able to quickly use the URL to specify the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repository's Location")]),_v(" and a specific "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Branch")]),_v(" at the same time.")]),_v(" "),_c('p',[_v("Below is an example:")]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Repository's Location")]),_v(" "),_c('th',[_v("Branch")]),_v(" "),_c('th',[_v("Author's Git Host ID")]),_v(" "),_c('th',[_v("... Hidden columns")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://github.com/reposense/RepoSense/tree/release")])]),_v(" "),_c('td'),_v(" "),_c('td',[_v("sikai00")]),_v(" "),_c('td',[_v("--")])])])])]),_c('p',[_v("There is no need to specify the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Branch")]),_v(" column now, as we have specified it through the GitHub branch URL.")]),_v(" "),_c('box',{attrs:{"type":"warning","seamless":""}},[_c('p',[_v("GitLab and BitBucket branch URL are not supported at the moment.")])]),_v(" "),_c('h2',{attrs:{"id":"combining-the-advanced-syntax"}},[_v("Combining the advanced syntax"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#combining-the-advanced-syntax","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("It is possible to combine the above-mentioned advanced syntax. By doing so, we can go from:")]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Repository's Location")]),_v(" "),_c('th',[_v("Branch")]),_v(" "),_c('th',[_v("Author's Git Host ID")]),_v(" "),_c('th',[_v("... Hidden columns")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://github.com/MarkBind/markbind/tree/vue3-migration")])]),_v(" "),_c('td'),_v(" "),_c('td',[_v("sikai00")]),_v(" "),_c('td',[_v("--")])]),_v(" "),_c('tr',[_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://github.com/reposense/RepoSense.git")])]),_v(" "),_c('td',[_v("master")]),_v(" "),_c('td',[_v("sikai00")]),_v(" "),_c('td',[_v("--")])]),_v(" "),_c('tr',[_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://github.com/reposense/RepoSense.git")])]),_v(" "),_c('td',[_v("cypress")]),_v(" "),_c('td',[_v("sikai00")]),_v(" "),_c('td',[_v("--")])])])])]),_c('p',[_v("to:")]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Repository's Location")]),_v(" "),_c('th',[_v("Branch")]),_v(" "),_c('th',[_v("Author's Git Host ID")]),_v(" "),_c('th',[_v("... Hidden columns")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://github.com/MarkBind/markbind/tree/vue3-migration;https://github.com/reposense/RepoSense.git~master|cypress")])]),_v(" "),_c('td'),_v(" "),_c('td',[_v("sikai00")]),_v(" "),_c('td',[_v("--")])])])])]),_c('br')],1)])],1),_v(" "),_c('p'),_v(" "),_c('h2',{attrs:{"id":"group-config-csv"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("group-config.csv")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#group-config-csv","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Optionally, you can provide a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("group-config.csv")]),_v("(which should be in the same directory as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(" file) to provide details on any custom groupings for files in specified repositories ("),_c('a',{attrs:{"href":"/RepoSense/ug/group-config.csv"}},[_v("example")]),_v("). It should contain the following columns:")]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Column Name")]),_v(" "),_c('th',[_v("Explanation")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_v("Repository's Location")]),_v(" "),_c('td',[_v("Same as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(". Default: all the repos in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")])])]),_v(" "),_c('tr',[_c('td',[_v("Group Name "),_c('span',{staticClass:"badge bg-danger"},[_v("mandatory")])]),_v(" "),_c('td',[_v("Name of the group, e.g.,"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("test")]),_v(".")])]),_v(" "),_c('tr',[_c('td',[_v("Globs * "),_c('span',{staticClass:"badge bg-danger"},[_v("mandatory")])]),_v(" "),_c('td',[_v("The list of file path globs to include for specified group, e.g.,"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("**/test/*;**.java")]),_v(".")])])])])]),_c('p',[_c('sup',[_v("* "),_c('strong',[_v("Multi-value column")]),_v(": multiple values can be entered in this column using a semicolon "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(";")]),_v(" as the separator.")])]),_v(" "),_c('p',[_v("Note that a file in a given repository should only be tagged to one group. "),_c('br'),_v("\ne.g.: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("example.java")]),_v(" in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("example-repo")]),_v(" can either be in the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("test")]),_v(" group or the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("code")]),_v(" group, but not in both "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("test")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("code")]),_v(" group. If multiple groups are specified for a given file, the latter group (i.e., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("code")]),_v(" group) is set for the file.")]),_v(" "),_c('h2',{attrs:{"id":"report-config-json"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("report-config.json")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#report-config-json","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("You can optionally use "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("report-config.json")]),_v(" to customize report generation by providing the following information. ("),_c('a',{attrs:{"href":"/RepoSense/ug/report-config.json"}},[_v("example")]),_v(")")]),_v(" "),_c('p',[_c('strong',[_v("Fields to provide")]),_v(":")]),_v(" "),_c('ul',[_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("title")]),_v(": Title of the generated report, which is also the title of the deployed dashboard. Default: \"RepoSense Report\"")])]),_v(" "),_c('div',{attrs:{"id":"section-standalone"}},[_c('h2',{attrs:{"id":"config-json-standalone-config-file"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("config.json")]),_v(" (standalone config file)"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#config-json-standalone-config-file","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Repo owners can provide the following additional information to RepoSense using a config file that we call the "),_c('strong',[_c('em',[_v("standalone config file")])]),_v(":")]),_v(" "),_c('ul',[_c('li',[_v("which files/authors/commits to analyze/omit")]),_v(" "),_c('li',[_v("which git and git host usernames belong to which authors")]),_v(" "),_c('li',[_v("the display of an author")])]),_v(" "),_c('p',[_v("To use this feature, add a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("_reposense/config.json")]),_v(" to the root of your repo using the format in the example below ("),_c('a',{attrs:{"href":"https://github.com/reposense/RepoSense/blob/master/_reposense/config.json"}},[_v("another example")]),_v(") and "),_c('strong',[_v("commit it")]),_v(" (reason: RepoSense can see committed code only):")]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"no-line-numbers hljs json"}},[_c('span',[_v("{\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"ignoreGlobList\"")]),_v(": ["),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"about-us/**\"")]),_v(", "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"**index.html\"")]),_v("],\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"formats\"")]),_v(": ["),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"html\"")]),_v(", "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"css\"")]),_v("],\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"ignoreCommitList\"")]),_v(": ["),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"90018e49f129ce7e0abdc8b18e91c9813588c601\"")]),_v(", "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"67890def\"")]),_v(", "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"abc123..def456\"")]),_v("],\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"ignoreAuthorList\"")]),_v(": ["),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"charlie\"")]),_v("],\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"authors\"")]),_v(":\n")]),_c('span',[_v(" [\n")]),_c('span',[_v(" {\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"gitId\"")]),_v(": "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"alice\"")]),_v(",\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"emails\"")]),_v(": ["),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"alice@example.com\"")]),_v(", "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"alicet@example.com\"")]),_v("],\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"displayName\"")]),_v(": "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"Alice T.\"")]),_v(",\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"authorNames\"")]),_v(": ["),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"AT\"")]),_v(", "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"A\"")]),_v("],\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"ignoreGlobList\"")]),_v(": ["),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"**.css\"")]),_v("]\n")]),_c('span',[_v(" },\n")]),_c('span',[_v(" {\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"gitId\"")]),_v(": "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"bob\"")]),_v("\n")]),_c('span',[_v(" }\n")]),_c('span',[_v(" ]\n")]),_c('span',[_v("}\n")])])]),_c('p',[_v("Note: all fields are optional unless specified otherwise.")]),_v(" "),_c('p',[_c('strong',[_v("Fields to provide "),_c('em',[_v("repository-level")]),_v(" info")]),_v(":")]),_v(" "),_c('ul',[_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ignoreGlobList")]),_v(": Folders/files to ignore, specified using the "),_c('a',{attrs:{"href":"https://docs.oracle.com/javase/tutorial/essential/io/fileOps.html#glob"}},[_c('em',[_v("glob format")])]),_v(".")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("formats")]),_v(": File formats to analyze. Binary file formats, such as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("png")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("jpg")]),_v(", will be automatically labelled as the file type "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("binary")]),_v(" in the generated report. Default: all file formats")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ignoreCommitList")]),_v(": The list of commits to ignore during analysis. For accurate results, the commits should be provided with their full hash. Additionally, a range of commits can be specified using the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("..")]),_v(" notation e.g. "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("abc123..def456")]),_v(" (both inclusive).")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ignoreAuthorList")]),_v(": The list of authors to ignore during analysis. Authors specified in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("authors")]),_v(" field or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(" will be also be omitted if they are in this list. Authors should be specified by their "),_c('a',{attrs:{"href":"#a-note-about-git-author-name"}},[_v("Git Author Name")]),_v(".")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("fileSizeLimit")]),_v(": A file size limit for the repository in bytes as a single number without units, that will override the default file size limit. If not specified, the default file size limit will continue to be used.")])]),_v(" "),_c('p',[_c('strong',[_v("Fields to provide "),_c('em',[_v("author-level")]),_v(" info")]),_v(":"),_c('br'),_v("\nNote: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("authors")]),_v(" field should contain "),_c('em',[_v("all")]),_v(" authors that should be captured in the analysis.")]),_v(" "),_c('ul',[_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("gitId")]),_v(": Username of the author. "),_c('span',{staticClass:"badge bg-danger"},[_v("mandatory")]),_v(" field.")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("emails")]),_v(": Associated git emails of the author. For GitHub, this can be found in your "),_c('a',{attrs:{"href":"https://github.com/settings/emails"}},[_v("GitHub settings")]),_v(".")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("displayName")]),_v(": Name to display on the report for this author.")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("authorNames")]),_v(": Git Author Name(s) used in the author's commits. By default, RepoSense assumes an author would use their remote Git Host username as the Git username too. The meaning of "),_c('em',[_v("Git Author Name")]),_v(" is explained in "),_c('a',{attrs:{"href":"#a-note-about-git-author-name"}},[_c('em',[_v("A note about git author name")])]),_v(".")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ignoreGlobList")]),_v(": "),_c('em',[_v("Additional")]),_v(" (i.e. on top of the repo-level "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ignoreGlobList")]),_v(") folders/files to ignore for a specific author. The path glob syntax is specified by the "),_c('a',{attrs:{"href":"https://docs.oracle.com/javase/tutorial/essential/io/fileOps.html#glob"}},[_c('em',[_v("glob format")])]),_v(". In the example above, the actual "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ignoreGlobList")]),_v(" for "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("alice")]),_v(" would be "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("[\"about-us/**\", \"**index.html\", \"**.css\"]")]),_v(".")])]),_v(" "),_c('p',[_v("To verify your standalone configuration is as intended, add the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("_reposense/config.json")]),_v(" to your local copy of repo and run RepoSense against it as follows:"),_c('br')]),_v(" "),_c('ul',[_c('li',[_v("Format: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar --repo LOCAL_REPO_LOCATION")]),_v(" "),_c('br')]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar --repo c:/myRepose/foo/bar")]),_c('br'),_v("\nAfter that, view the report to see if the configuration you specified in the config file is being reflected correctly in the report.")])]),_v(" "),_c('h2',{attrs:{"id":"a-note-about-git-author-name"}},[_v("A note about git author name"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#a-note-about-git-author-name","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Git Author Name")]),_v(" refers to the customizable author's display name set in the local "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(".gitconfig")]),_v(" file. For example, in the Git Log's display:")]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"no-line-numbers hljs"}},[_c('span',[_v("...\n")]),_c('span',[_v("commit cd7f610e0becbdf331d5231887d8010a689f87c7\n")]),_c('span',[_v("Author: ConfiguredAuthorName \n")]),_c('span',[_v("Date: Fri Feb 9 19:14:41 2018 +0800\n")]),_c('span',[_v("\n")]),_c('span',[_v(" Make some changes to show my new author's name\n")]),_c('span',[_v("\n")]),_c('span',[_v("commit e3f699fd4ef128eebce98d5b4e5b3bb06a512f49\n")]),_c('span',[_v("Author: ActualGitHostId \n")]),_c('span',[_v("Date: Fri Feb 9 19:13:13 2018 +0800\n")]),_c('span',[_v("\n")]),_c('span',[_v(" Initial commit\n")]),_c('span',[_v(" ...\n")])])]),_c('p',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ActualGitHostId")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ConfiguredAuthorName")]),_v(" are both "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Git Author Name")]),_v(" of the same author."),_c('br'),_v("\nTo find the author name that you are currently using for your current git repository, run the following command within your git repository:")]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"no-line-numbers hljs"}},[_c('span',[_v("git config user.name\n")])])]),_c('p',[_v("To set the author name to the value you want (e.g., to set it to your GitHub username) for your current git repository, you can use the following command ("),_c('a',{attrs:{"href":"https://www.git-tower.com/learn/git/faq/change-author-name-email"}},[_v("more info")]),_v("):")]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"no-line-numbers hljs"}},[_c('span',[_v("git config user.name \"YOUR_AUTHOR_NAME”\n")])])]),_c('p',[_v("To set the author name to use a default value you want for future git repositories, you can use the following command:")]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"no-line-numbers hljs"}},[_c('span',[_v("git config --global user.name \"YOUR_AUTHOR_NAME”\n")])])]),_c('p',[_v("RepoSense expects the Git Author Name to be the same as author's username on the Git hosting platform (GitHub, GitLab, BitBucket). If an author's "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Git Author Name")]),_v(" is different from their username on the Git hosting platform, the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Git Author Name")]),_v(" needs to be specified in the standalone config file. If the author has more than one "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Git Author Name")]),_v(", multiple values can be entered too.")]),_v(" "),_c('box',{attrs:{"type":"warning","seamless":""}},[_c('p',[_v("Note: Symbols such as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("\"")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("!")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("/")]),_v(" etc. in your author name will be omitted, which may reduce the accuracy of the analysis if 2 names in the repository are approximately similar.")])])],1),_v(" "),_c('div',{attrs:{"id":"section-blurbs"}},[_c('h2',{attrs:{"id":"blurbs-md"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("blurbs.md")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#blurbs-md","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("You can optionally use "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("blurbs.md")]),_v(" to add blurbs in Markdown syntax for repository branches. These blurbs will be seen when grouping by "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repo/Branch")]),_v(". ("),_c('a',{attrs:{"href":"https://github.com/reposense/RepoSense/blob/master/docs/ug/blurbs.md"}},[_v("example")]),_v(")")]),_v(" "),_c('p',[_c('strong',[_v("Format")]),_v(":")]),_v(" "),_c('ul',[_c('li',[_v("First line in section: Link to the repository branch.")]),_v(" "),_c('li',[_v("Second line onwards: Blurb content.")]),_v(" "),_c('li',[_v("Delimiter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("")]),_v(". Everything on the line after the delimiter will be ignored.")])])])],1)])],1),_v(" "),_c('p')]),_v(" "),_c('p',[_c('span',{staticClass:"badge bg-dark bigger-level0"},[_v("Step 4")]),_v(" "),_c('strong',[_v("View the generated report:")])]),_v(" "),_c('p',[_v("To access your regenerated RepoSense report, go to the settings of your fork in GitHub, under "),_c('strong',[_v("GitHub Pages")]),_v(" section, look for "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Your site is published at [LINK]")]),_v(". It should look something like "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://[YOUR_GITHUB_ID].github.io/publish-RepoSense")]),_v(".\n"),_c('a',{attrs:{"href":"/RepoSense/images/publishingguide-githubsetting.jpg","target":"_self"}},[_c('img',{staticClass:"img-fluid",attrs:{"src":"/RepoSense/images/publishingguide-githubsetting.jpg","alt":"GitHub Setting","title":"GitHub Setting"}})])]),_v(" "),_c('box',{attrs:{"type":"tip","seamless":""}},[_c('p',[_v("There is also a published GitHub Action ("),_c('a',{attrs:{"href":"https://github.com/marketplace/actions/reposense-action"}},[_v("reposense-action")]),_v(") that can be used to generate and publish RepoSense reports. It is especially convenient for users who wish to skip the forking and setting up of a separate repository. For more information, refer to the "),_c('a',{attrs:{"href":"https://github.com/marketplace/actions/reposense-action#usage"}},[_v("usage description")]),_v(".")])])],1),_v(" "),_c('div',{attrs:{"id":"section-updating-the-report"}},[_c('h2',{attrs:{"id":"updating-the-report"}},[_v("Updating the report"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#updating-the-report","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_v("Manual:")])]),_v(" "),_c('ul',[_c('li',[_v("You can trigger GitHub to re-generate and re-deploy the report by pushing an empty commit to your fork.")]),_v(" "),_c('li',[_v("Currently, the GitHub Actions UI does not support the manual execution of workflows.")])]),_v(" "),_c('p',[_c('strong',[_v("Automated:")]),_v(" GitHub actions can be set to run periodically.")]),_v(" "),_c('ol',[_c('li',[_v("Edit the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(".github/workflows/main.yml")]),_v(" and uncomment the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("schedule:")]),_v(" section.")]),_v(" "),_c('li',[_v("You may change the expression after "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("cron:")]),_v(" to a schedule of your choice. Read more about cron syntax "),_c('a',{attrs:{"href":"https://help.github.com/en/actions/reference/events-that-trigger-workflows#scheduled-events-schedule"}},[_v("here")]),_v(".")]),_v(" "),_c('li',[_v("Commit your changes.")])])])])])],1),_v(" "),_c('p'),_v(" "),_c('div',{staticClass:"indented-level0"},[_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('span',[_c('span',{staticClass:"glyphicon glyphicon-log-in",attrs:{"aria-hidden":"true"}})]),_v(" Appendix: "),_c('strong',[_v("Using RepoSense with Travis")])])]},proxy:true}])},[_v(" "),_c('div',[_c('h1',{staticClass:"display-4",attrs:{"id":"appendix-reposense-with-travis"}},[_c('span',[_v("Appendix: RepoSense with Travis")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#appendix-reposense-with-travis","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{attrs:{"id":"section-setting-up"}},[_c('div',{staticClass:"lead"},[_c('p',[_v("You can use the CI tool Travis to automate generating and publishing of RepoSense reports.")])]),_v(" "),_c('h2',{attrs:{"id":"setting-up-2"}},[_v("Setting up"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#setting-up-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{attrs:{"id":"section-fork-token"}},[_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("The instructions below assume you are using GitHub pages to host your report.")])]),_v(" "),_c('p',[_c('span',{staticClass:"badge bg-dark bigger-level0"},[_v("Step 1")]),_v(" "),_c('strong',[_v("Fork the "),_c('em',[_v("publish-RepoSense")]),_v(" repository")]),_v(" using this "),_c('a',{attrs:{"href":"https://github.com/RepoSense/publish-RepoSense/fork"}},[_v("link")]),_v(". Optionally, you can rename the fork to match your RepoSense report e.g., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("project-code-dashboard")]),_v(".")])],1),_v(" "),_c('p',[_c('span',{staticClass:"badge bg-dark bigger-level0"},[_v("Step 2")]),_v(" "),_c('strong',[_v("Generate a "),_c('em',[_v("personal access token")]),_v(" or "),_c('em',[_v("deploy key")]),_v(" on GitHub")]),_v(" as explained in the panel below.")]),_v(" "),_c('div',{staticClass:"indented-level0"},[_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('span',[_c('span',{staticClass:"glyphicon glyphicon-log-in",attrs:{"aria-hidden":"true"}})]),_v(" Granting write access on GitHub")])]},proxy:true}])},[_v(" "),_c('div',[_c('h2',{attrs:{"id":"granting-write-access-to-a-repository"}},[_v("Granting write-access to a repository"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#granting-write-access-to-a-repository","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("We recommend using a "),_c('a',{attrs:{"href":"https://github.blog/2013-05-16-personal-api-tokens/"}},[_v("personal access token")]),_v(" if aiming for the ease of setup and "),_c('a',{attrs:{"href":"https://developer.github.com/v3/guides/managing-deploy-keys/#deploy-keys"}},[_v("deploy key")]),_v(" if aiming for enhanced security.")]),_v(" "),_c('h3',{attrs:{"id":"if-you-wish-to-use-personal-access-token"}},[_v("If you wish to use "),_c('em',[_v("personal access token")]),_v(":"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#if-you-wish-to-use-personal-access-token","onclick":"event.stopPropagation()"}})]),_v(" "),_c('ol',[_c('li',[_c('strong',[_v("Create a "),_c('em',[_v("personal access token")])]),_v(" by following this "),_c('a',{attrs:{"href":"https://help.github.com/articles/creating-a-personal-access-token-for-the-command-line/"}},[_v("guide")]),_v(" and give only "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("public_repo")]),_v(" permission.")]),_v(" "),_c('li',[_c('strong',[_v("Copy the token")]),_v(" for later use.")])]),_v(" "),_c('h3',{attrs:{"id":"if-you-wish-to-use-deploy-key"}},[_v("If you wish to use "),_c('em',[_v("deploy key")]),_v(":"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#if-you-wish-to-use-deploy-key","onclick":"event.stopPropagation()"}})]),_v(" "),_c('box',{attrs:{"type":"info"},scopedSlots:_u([{key:"icon",fn:function(){return [_c('span',{staticClass:"fab fa-windows",attrs:{"aria-hidden":"true"}})]},proxy:true}])},[_v(" "),_c('p',[_v("[Windows users] "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ssh-keygen")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("base64")]),_v(" are accessible using "),_c('a',{attrs:{"href":"https://gitforwindows.org/"}},[_v("Git Bash")]),_v(".")])]),_v(" "),_c('ol',[_c('li',[_c('strong',[_v("Create a public-private key pair")]),_v(" (without a passphrase) using the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ssh-keygen")]),_v(". "),_c('br'),_v("\ni.e., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ssh-keygen -t ecdsa -b 521 -f id_reposense -q -N \"\"")])]),_v(" "),_c('li',[_c('strong',[_v("Create a deploy key")]),_v(" as follows:\n"),_c('ol',[_c('li',[_v("Go to the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("settings")]),_v(" page of your publish-RepoSense fork")]),_v(" "),_c('li',[_v("Click on the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Deploy keys")]),_v(" item in the navigation menu in that page")]),_v(" "),_c('li',[_v("Click on the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Add deploy key")]),_v(" button and create a new deploy key with the contents of "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("id_reposense.pub")]),_v(".")])])]),_v(" "),_c('li',[_c('strong',[_v("Copy the private key")]),_v(" in base64 encoded format for later use. "),_c('br'),_v("\ni.e., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("cat id_reposense | base64 -w 0")])])])],1)])],1),_v(" "),_c('p'),_v(" "),_c('p',[_c('span',{staticClass:"badge bg-dark bigger-level0"},[_v("Step 3")]),_v(" "),_c('strong',[_v("Login to "),_c('a',{attrs:{"href":"https://travis-ci.org/"}},[_v("Travis-CI")]),_v(".")]),_v(" You may have to sign up first.")]),_v(" "),_c('p',[_c('span',{staticClass:"badge bg-dark bigger-level0"},[_v("Step 4")]),_v(" "),_c('strong',[_v("Sync your Travis account with GitHub:")])]),_v(" "),_c('ol',[_c('li',[_v("Go to "),_c('a',{attrs:{"href":"https://travis-ci.org/account/repositories"}},[_v("your account")]),_v(".")]),_v(" "),_c('li',[_v("Click on "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Sync account")]),_v(" to fetch all your repositories into Travis-CI.")])]),_v(" "),_c('p',[_c('span',{staticClass:"badge bg-dark bigger-level0"},[_v("Step 5")]),_v(" "),_c('strong',[_v("Activate the repository:")])]),_v(" "),_c('ol',[_c('li',[_v("Go to your "),_c('a',{attrs:{"href":"https://travis-ci.org/search/publish-RepoSense/"}},[_v("publish-RepoSense fork in Travis-CI")])]),_v(" "),_c('li',[_v("Under "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Current")]),_v(" tab, click on "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Activate repository")]),_v(".")])]),_v(" "),_c('p',[_c('span',{staticClass:"badge bg-dark bigger-level0"},[_v("Step 6")]),_v(" "),_c('strong',[_v("Set the token/key:")])]),_v(" "),_c('ol',[_c('li',[_v("In the same page, click on "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("More options")]),_v(" on the right.")]),_v(" "),_c('li',[_v("Then, click on the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Settings")]),_v(" option:"),_c('br'),_v(" "),_c('a',{attrs:{"href":"/RepoSense/images/publishingguide-travissetting.jpg","target":"_self"}},[_c('img',{staticClass:"img-fluid",attrs:{"src":"/RepoSense/images/publishingguide-travissetting.jpg","alt":"Travis-CI Dashboard","title":"Travis-CI Dashboard"}})])]),_v(" "),_c('li',[_v("Under "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Environment Variables")]),_v(", name a variable as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("GITHUB_TOKEN")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("GITHUB_DEPLOY_KEY")]),_v(" depending on your earlier choice and paste the token/key into its value field; then click "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Add")]),_v(".")]),_v(" "),_c('li',[_v("Ensure that the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Display value in build log")]),_v(" is "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("switched off")]),_v(" for security reasons:"),_c('br'),_v(" "),_c('a',{attrs:{"href":"/RepoSense/images/publishingguide-githubtoken.jpg","target":"_self"}},[_c('img',{staticClass:"img-fluid",attrs:{"src":"/RepoSense/images/publishingguide-githubtoken.jpg","alt":"Travis-CI Environment Variable","title":"Travis-CI Environment Variable"}})])])]),_v(" "),_c('p',[_c('span',{staticClass:"badge bg-dark bigger-level0"},[_v("Step 7")]),_v(" "),_c('strong',[_v("Update the report configuration:")])]),_v(" "),_c('span',{attrs:{"id":"section-edit-configs"}},[_c('p',[_v("In your fork, edit "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("run.sh")]),_v(" (and if applicable, "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("group-config.csv")]),_v(") to customize the command line parameters or repositories to be analyzed.")]),_v(" "),_c('div',{staticClass:"indented-level0"},[_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('span',[_c('span',{staticClass:"glyphicon glyphicon-log-in",attrs:{"aria-hidden":"true"}})]),_v(" Appendix: "),_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("run.sh")]),_v(" format")])])]},proxy:true}])},[_v(" "),_c('div',[_c('h1',{staticClass:"display-4",attrs:{"id":"appendix-run-sh-format-2"}},[_c('span',[_v("Appendix: run.sh format")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#appendix-run-sh-format-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{staticClass:"lead"},[_c('p',[_c('a',{attrs:{"href":"https://github.com/reposense/publish-RepoSense/blob/master/run.sh"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("run.sh")])]),_v(" is a script used for automating RepoSense report generation.")])]),_v(" "),_c('h3',{attrs:{"id":"customizing-the-reposense-command-2"}},[_v("Customizing the RepoSense command"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#customizing-the-reposense-command-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("You can update the RepoSense command (i.e., the last line) in the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("run.sh")]),_v(" to match your needs.")]),_v(" "),_c('div',{staticClass:"indented-level0"},[_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('span',[_c('span',{staticClass:"glyphicon glyphicon-log-in",attrs:{"aria-hidden":"true"}})]),_v(" Appendix: "),_c('strong',[_v("CLI syntax reference")])])]},proxy:true}])},[_v(" "),_c('div',[_c('h1',{staticClass:"display-4",attrs:{"id":"appendix-cli-syntax-reference-2"}},[_c('span',[_v("Appendix: CLI syntax reference")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#appendix-cli-syntax-reference-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{staticClass:"lead"},[_c('p',[_v("The command "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar")]),_v(" takes several flags.")])]),_v(" "),_c('box',[_c('p',[_c('strong',[_v("Examples")]),_v(":")]),_v(" "),_c('p',[_v("An example of a command using most parameters:"),_c('br'),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar --repos https://github.com/reposense/RepoSense.git --output ./report_folder --since 31/1/2017 --until 31/12/2018 --formats java adoc xml --view --ignore-standalone-config --last-modified-date --timezone UTC+08 --find-previous-authors --analyze-authorship --originality-threshold 0.66")])]),_v(" "),_c('p',[_v("Same command as above but using most parameters in alias format:"),_c('br'),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar -r https://github.com/reposense/RepoSense.git -o ./report_folder -s 31/1/2017 -u 31/12/2018 -f java adoc xml -v -i -l -t UTC+08 -F -A -ot 0.66")])])]),_v(" "),_c('p',[_v("The section below provides explanations for each of the flags.")]),_v(" "),_c('h3',{attrs:{"id":"analyze-authorship-a-2"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--analyze-authorship")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-A")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#analyze-authorship-a-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--analyze-authorship")])]),_v(": Performs further analysis to distinguish between partial and full credit attribution for\nlines of code assigned to the author.")]),_v(" "),_c('ul',[_c('li',[_v("Default: this feature is turned "),_c('em',[_c('strong',[_v("off")])]),_v(" by default and the author will receive partial credits for all lines of\ncode, as the code lines are at least partial credit but may not qualify for full credit.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-A")]),_v(" (upper case)")]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--analyze-authorship")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-A")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("A darker background colour represents full credit, while a lighter background colour represents partial credit.")]),_v(" "),_c('p',[_v("If the code is attributed to a different author by the user via "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("@@author")]),_v(" tag, then the new author will be given\npartial credit.")])]),_v(" "),_c('h3',{attrs:{"id":"assets-a-2"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--assets")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-a")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#assets-a-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{attrs:{"id":"section-assets"}},[_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--assets ASSETS_DIRECTORY")])]),_v(": Specifies where to place assets for report generation.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ASSETS_DIRECTORY")]),_v(" The directory containing the assets files. A "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("favicon.ico")]),_v(" file can be placed here to customize the favicon of the dashboard, while a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("title.md")]),_v(" file can be placed to customize the "),_c('a',{attrs:{"href":"https://reposense.org/ug/customizingReports.html#add-a-title"}},[_v("title")]),_v(" of the report using "),_c('a',{attrs:{"href":"https://www.markdownguide.org/basic-syntax/"}},[_v("Markdown syntax")]),_v(".")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-a")])]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--assets ./assets")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-a ./assets")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("If "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--assets")]),_v(" is not specified, RepoSense looks for assets in the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./assets")]),_v(" directory.")])])])],1),_v(" "),_c('h3',{attrs:{"id":"config-c-2"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--config")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-c")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#config-c-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{attrs:{"id":"section-config"}},[_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--config CONFIG_DIRECTORY")])]),_v(": Specifies that config files located in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("CONFIG_DIRECTORY")]),_v(" should be used to customize the report.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("CONFIG_DIRECTORY")]),_v(" The directory containing the config files. Should contain a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(" file. Optionally, can contain an "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(" file or/and a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("group-config.csv")]),_v(" file or/and a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("report-config.json")]),_v(" file or/and a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("blurbs.md")]),_v(" file.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-c")])]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar --config ./config")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("Cannot be used with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repos")]),_v(". The "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repos")]),_v(" flag will take precedence over this flag.")]),_v(" "),_c('li',[_v("If both "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repos")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--config")]),_v(" are not specified, RepoSense looks for config files in the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./config")]),_v(" directory.")]),_v(" "),_c('li',[_v("Config files must follow "),_c('a',{attrs:{"href":"/RepoSense/ug/configFiles.html"}},[_v("this")]),_v(" format.")])])])],1),_v(" "),_c('h3',{attrs:{"id":"formats-f-2"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--formats")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-f")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#formats-f-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--formats LIST_OF_FORMATS")])]),_v(": Specifies which file extensions to be included in the analysis.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("LIST_OF_FORMATS")]),_v(" A space-separated list of file extensions that should be included in the analysis."),_c('br'),_v("\nDefault: all file formats")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-f")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--formats css fxml gradle")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-f css fxml gradle")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Binary file formats, such as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("jpg")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("png")]),_v(","),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("exe")]),_v(","),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("zip")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("rar")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("docx")]),_v(", and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("pptx")]),_v(", all will be labelled as the file type "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("binary")]),_v(" in the generated report.")])]),_v(" "),_c('h3',{attrs:{"id":"find-previous-authors-f-2"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--find-previous-authors")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-F")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#find-previous-authors-f-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--find-previous-authors")])]),_v(": Utilizes Git blame's ignore revisions functionality, RepoSense will attempt to blame the line changes caused by commits in the ignore commit list to the previous authors who altered those lines (if available).")]),_v(" "),_c('ul',[_c('li',[_v("Default: RepoSense will assume that no authors are responsible for the code changes in the lines altered by commits in the ignore commit list.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-F")]),_v(" (uppercase F)")]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--find-previous-authors")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-F")])])]),_v(" "),_c('h3',{attrs:{"id":"help-h-2"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--help")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-h")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#help-h-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--help")])]),_v(": Shows the help message.")]),_v(" "),_c('ul',[_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-h")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Cannot be used with any other flags. This flag takes precedence over all other flags.")])]),_v(" "),_c('h3',{attrs:{"id":"ignore-standalone-config-i-2"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--ignore-standalone-config")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-i")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#ignore-standalone-config-i-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--ignore-standalone-config")])]),_v(": Specifies that the standalone config file in the repo should be ignored.")]),_v(" "),_c('ul',[_c('li',[_v("Default: the standalone config file is not ignored")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-i")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--ignore-standalone-config")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-i")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("This flag overrides the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Ignore standalone config")]),_v(" field in the CSV config file.")])]),_v(" "),_c('h3',{attrs:{"id":"ignore-filesize-limit-i-2"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--ignore-filesize-limit")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-I")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#ignore-filesize-limit-i-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--ignore-filesize-limit")])]),_v(": Specifies that the file size limit (both default and user-defined) should be ignored during the analysis.")]),_v(" "),_c('ul',[_c('li',[_v("Default: the file size limit is not ignored")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-I")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--ignore-filesize-limit")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-I")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("All files are subject to a default file size limit or a custom size limit set by the user. Most files should not be\naffected by the default size limit. This flag can be useful for including files in your report that are affected by\nthe size limit. Note that this flag may result in large report sizes and/or slower report generation.")])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("This flag overrides the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Ignore file size limit")]),_v(" field in the CSV config file.")])]),_v(" "),_c('h3',{attrs:{"id":"last-modified-date-l-2"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--last-modified-date")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-l")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#last-modified-date-l-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--last-modified-date")])]),_v(": Specifies that the last modified date of each line of code should be added to "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("authorship.json")]),_v(".")]),_v(" "),_c('ul',[_c('li',[_v("Default: the last modified date of each line of code will not be added to "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("authorship.json")])]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-l")]),_v(" (lowercase L)")]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--last-modified-date")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-l")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("Cannot be used with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--shallow-cloning")]),_v(". This may result in an incorrect last modified date.")]),_v(" "),_c('li',[_v("The last modified dates will be in the same timezone specified with the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--timezone")]),_v(" flag.")])])]),_v(" "),_c('h3',{attrs:{"id":"originality-threshold-ot-2"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--originality-threshold")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-ot")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#originality-threshold-ot-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--originality-threshold [VALUE]")])]),_v(": Specifies the cut-off point for partial and full credit\nin "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--analyze-authorship")]),_v(". Author will be given full credit if their contribution exceeds this threshold, else partial\ncredit is given.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("VALUE")]),_v(" Optional. Acceptable range: [0.0, 1.0]."),_c('br'),_v("\nDefault: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("0.51")])]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-ot")])]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--originality-threshold 0.66")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-ot 0.66")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("Requires "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--analyze-authorship")]),_v(" flag.")]),_v(" "),_c('li',[_v("An author's contribution, or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("originality score")]),_v(", is calculated using Levenshtein Distance (Edit Distance) algorithm.\nWe compare the difference between current code line and its previous versions.")])])]),_v(" "),_c('h3',{attrs:{"id":"output-o-2"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--output")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-o")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#output-o-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--output OUTPUT_DIRECTORY")])]),_v(": Indicates where to save the report generated.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("OUTPUT_DIRECTORY")]),_v(" The location for the generated "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("reposense-report")]),_v(" folder."),_c('br'),_v("\nDefault: current directory")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-o")])]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--output ./foo")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-o ./foo")]),_v(" (the report will be in the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./foo/reposense-report")]),_v(" folder)")])]),_v(" "),_c('h3',{attrs:{"id":"period-p-2"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--period")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-p")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#period-p-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--period PERIOD")])]),_v(": Specifies the period of analysis window.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("PERIOD")]),_v(" The period of analysis window, in the format "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("nd")]),_v(" (for n days) or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("nw")]),_v(" (for n weeks). It is used to calculate end date if only start date is specified, or calculate end date if only start date is specified.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-p")])]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--period 30d")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--period 4w")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("If both start date and end date are not specified, the date of generating the report will be taken as the end date.")]),_v(" "),_c('li',[_v("May analyze the incorrect date range if used with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since d1")]),_v(". The program will throw a warning.")]),_v(" "),_c('li',[_v("Cannot be used with both "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--until")]),_v(". The program will throw an exception.")])])]),_v(" "),_c('h3',{attrs:{"id":"repo-repos-r-2"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repo")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repos")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-r")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#repo-repos-r-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repo REPO_LOCATION")])]),_v(": Specifies which repositories to analyze.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("REPO_LOCATION")]),_v(" A list of URLs or the disk location of the git repositories to analyze, separated by spaces.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-r")])]),_v(" "),_c('li',[_v("Examples:\n"),_c('ul',[_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repos https://github.com/reposense/RepoSense.git")])]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repo https://github.com/reposense/RepoSense.git c:/myRepose/foo/bar")]),_v(": analyzes the two specified repos (one remote, one local) and generates one report containing details of both.")])])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Cannot be used with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--config")]),_v(". This flag takes precedence over "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--config")]),_v(".")])]),_v(" "),_c('h3',{attrs:{"id":"shallow-cloning-s-2"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--shallow-cloning")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-S")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#shallow-cloning-s-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--shallow-cloning")])]),_v(": Clones repositories using Git's shallow cloning functionality, which can significantly reduce the time taken to clone large repositories. However, the flag should not be used for smaller repositories where the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(".git")]),_v(" file is smaller than 500 MB, as it would create overhead.")]),_v(" "),_c('ul',[_c('li',[_v("Default: RepoSense does not clone repositories using Git's shallow cloning functionality.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-S")]),_v(" (uppercase S)")]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--shallow-cloning")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-S")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Cannot be used with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--last-modified-date")]),_v(". This may result in an incorrect last modified date.")])]),_v(" "),_c('h3',{attrs:{"id":"since-s-2"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-s")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#since-s-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since START_DATE")])]),_v(": Specifies the start date for the period to be analyzed.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("START_DATE")]),_v(" The first day of the period to be analyzed, in the format "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("DD/MM/YYYY")]),_v("."),_c('br'),_v("\nDefault: one month before the current date")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-s")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since 21/10/2017")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-s 21/10/2017")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("If the start date is not specified, only commits made one month before the end date (if specified) or the date of generating the report, will be captured and analyzed.")]),_v(" "),_c('li',[_v("If "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("d1")]),_v(" is specified as the start date ("),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since d1")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-s d1")]),_v("), then the program will search for the earliest commit date of all repositories and use that as the start date.")]),_v(" "),_c('li',[_v("If "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("d1")]),_v(" is specified together with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--period")]),_v(", then the program will warn that the date range being analyzed may be incorrect.")])])]),_v(" "),_c('h3',{attrs:{"id":"timezone-t-2"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--timezone")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-t")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#timezone-t-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--timezone ZONE_ID")])]),_v(": Indicates the timezone to be used for the analysis.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ZONE_ID")]),_v(" The timezone in the format "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ZONE_ID[±hh[mm]]")]),_v("."),_c('br'),_v("\nDefault: system's default timezone")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-t")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--timezone UTC+08")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-t UTC-1030")])])]),_v(" "),_c('h3',{attrs:{"id":"until-u-2"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--until")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-u")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#until-u-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--until END_DATE")])]),_v(": Specifies the end date of the analysis period.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("END_DATE")]),_v(" The last date of the period to be analyzed, in the format "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("DD/MM/YYYY")]),_v("."),_c('br'),_v("\nDefault: current date")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-u")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--until 21/10/2017")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-u 21/10/2017")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Note: If the end date is not specified, the date of generating the report will be taken as the end date.")])]),_v(" "),_c('h3',{attrs:{"id":"version-v-2"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--version")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-V")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#version-v-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--version")])]),_v(": Shows the version of RepoSense.")]),_v(" "),_c('ul',[_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-V")]),_v(" (upper case)")])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Cannot be used with any other flags. This flag takes precedence over all other flags other than "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--help")]),_v(".")])]),_v(" "),_c('h3',{attrs:{"id":"view-v-2"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--view")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-v")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#view-v-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--view [REPORT_FOLDER]")])]),_v(": Specifies that the report should be opened in the default browser.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("REPORT_FOLDER")]),_v(" Optional. If specified, no analysis will be performed and the report specified by the argument will be opened."),_c('br'),_v("\nDefault: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./reposense-report")])]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-v")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--view")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-v")])])])],1)])],1),_v(" "),_c('p'),_v(" "),_c('h3',{attrs:{"id":"specifying-which-version-of-reposense-to-use-2"}},[_v("Specifying which version of RepoSense to use"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#specifying-which-version-of-reposense-to-use-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Depending on which version you wish to use for report generation, add one of the following flags to the line "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./get-reposense.py")]),_v(" in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("run.sh")]),_v(" (e.g., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./get-reposense.py --release")]),_v("):")]),_v(" "),_c('ul',[_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--release")]),_v(": Use the latest release (Stable)")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--master")]),_v(": Use the latest version of the master branch")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--tag TAG")]),_v(" (e.g. "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--tag v1.6.1")]),_v("): Use the version identified by the Git tag given")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--commit COMMIT")]),_v(" (e.g. "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--commit abc123")]),_v("): Use the version identified by the Git commit SHA given")])])])])],1),_v(" "),_c('p'),_v(" "),_c('div',{staticClass:"indented-level0"},[_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('span',[_c('span',{staticClass:"glyphicon glyphicon-log-in",attrs:{"aria-hidden":"true"}})]),_v(" Appendix: "),_c('strong',[_v("Config files format")])])]},proxy:true}])},[_v(" "),_c('div',[_c('h1',{staticClass:"display-4",attrs:{"id":"appendix-config-files-format-2"}},[_c('span',[_v("Appendix: Config files format")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#appendix-config-files-format-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{staticClass:"lead"},[_c('p',[_v("Given below are the details of the various config files used by RepoSense.")])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_c('strong',[_v("RepoSense ignores the order of column headers in the CSV config files. However, the spelling of the column headers must match the specified headers exactly, or the column would be ignored by RepoSense.")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_c('strong',[_v("A value in a config file is optional to provide unless it is specified as "),_c('span',{staticClass:"badge bg-danger"},[_v("mandatory")])]),_v(".")])]),_v(" "),_c('h2',{attrs:{"id":"repo-config-csv-2"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#repo-config-csv-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(" file contains repo-level config data.")]),_v(" Each row represents a repository's configuration ("),_c('a',{attrs:{"href":"/RepoSense/ug/repo-config.csv"}},[_v("example")]),_v(").")]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Column Name")]),_v(" "),_c('th',[_v("Explanation")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_v("Repository's Location "),_c('span',{staticClass:"badge bg-danger"},[_v("mandatory")])]),_v(" "),_c('td',[_v("The "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Remote Repo URL")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Disk Path")]),_v(" to the git repository e.g., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://github.com/foo/bar.git")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("C:\\Users\\user\\Desktop\\GitHub\\foo\\bar")])])]),_v(" "),_c('tr',[_c('td',[_v("Branch")]),_v(" "),_c('td',[_v("The branch to analyze in the target repository e.g., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("master")]),_v(". Default: the default branch of the repo")])]),_v(" "),_c('tr',[_c('td',[_v("File formats"),_c('sup',[_v("*+")])]),_v(" "),_c('td',[_v("The file extensions to analyze. Binary file formats, such as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("png")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("jpg")]),_v(", will be automatically labelled as the file type "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("binary")]),_v(" in the generated report. Default: all file formats")])]),_v(" "),_c('tr',[_c('td',[_v("Find Previous Authors")]),_v(" "),_c('td',[_v("Enter "),_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("yes")])]),_v(" to utilize Git blame's ignore revisions functionality, RepoSense will attempt to blame the line changes caused by commits in the ignore commit list to the previous authors who altered those lines (if available).")])]),_v(" "),_c('tr',[_c('td',[_v("Ignore Glob List"),_c('sup',[_v("*+")])]),_v(" "),_c('td',[_v("The list of file path globs to ignore during analysis for each author e.g., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("test/**;temp/**")]),_v(". Refer to the "),_c('a',{attrs:{"href":"https://docs.oracle.com/javase/tutorial/essential/io/fileOps.html#glob"}},[_c('em',[_v("glob format")])]),_v(" for the path glob syntax.")])]),_v(" "),_c('tr',[_c('td',[_v("Ignore standalone config")]),_v(" "),_c('td',[_v("To ignore the standalone config file (if any) in target repository, enter "),_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("yes")])]),_v(". If the cell is empty, the standalone config file in the repo (if any) will take precedence over configurations provided in the csv files.")])]),_v(" "),_c('tr',[_c('td',[_v("Ignore Commits List"),_c('sup',[_v("*+")])]),_v(" "),_c('td',[_v("The list of commits to ignore during analysis. For accurate results, the commits should be provided with their full hash. Additionally, a range of commits can be specified using the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("..")]),_v(" notation e.g. "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("abc123..def456")]),_v(" (both inclusive).")])]),_v(" "),_c('tr',[_c('td',[_v("Ignore Authors List"),_c('sup',[_v("*+")])]),_v(" "),_c('td',[_v("The list of authors to ignore during analysis. Authors should be specified by their "),_c('a',{attrs:{"href":"#a-note-about-git-author-name"}},[_v("Git Author Name")]),_v(".")])]),_v(" "),_c('tr',[_c('td',[_v("Shallow Cloning")]),_v(" "),_c('td',[_v("Enter "),_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("yes")])]),_v(" to clone the repository using Git's shallow cloning functionality. This option can significantly reduce the time taken to clone large repositories. However, the option should ideally be disabled for smaller repositories where the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(".git")]),_v(" file is smaller than 500 MB, as it would create overhead.")])]),_v(" "),_c('tr',[_c('td',[_v("File Size Limit"),_c('sup',[_v("+")])]),_v(" "),_c('td',[_v("Enter a file size limit for the repository in bytes as a single number without units (for a size limit of 1MB for example, enter 1000000). This file size limit will override the default file size limit (500KB). Files exceeding the file size limit will be marked as ignored and only the file name and line count will be reflected in the report.")])]),_v(" "),_c('tr',[_c('td',[_v("Ignore File Size Limit")]),_v(" "),_c('td',[_v("Enter "),_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("yes")])]),_v(" to ignore both the default file size limit and the file size limit possibly set by the user in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(".")])]),_v(" "),_c('tr',[_c('td',[_v("Skip Ignored File Analysis")]),_v(" "),_c('td',[_v("Enter "),_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("yes")])]),_v(" to ignore analysis of files exceeding the file size limit entirely. If file analysis is skipped, all information about the file will be omitted from the generated report. This option can significantly improve report generation time.")])])])])]),_c('box',{attrs:{"type":"info","seamless":""}},[_v("\nThe Shallow Cloning option is incompatible with the \"--last-modified-date\" CLI flag.\n")]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_v("\nIf Ignore File Size Limit is yes, the File Size Limit and Skip Ignored File Analysis columns are ignored.\n")]),_v(" "),_c('p',[_c('sup',[_v("* "),_c('strong',[_v("Multi-value column")]),_v(": multiple values can be entered in this column using a semicolon "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(";")]),_v(" as the separator.")]),_c('br'),_v(" "),_c('sup',[_v("+ "),_c('strong',[_v("Overrideable column")]),_v(": prepend with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("override:")]),_v(" to use entered value(s) instead of value(s) from standalone config.")])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("When using "),_c('a',{attrs:{"href":"#config-json-standalone-config-file"}},[_v("standalone config")]),_v(" (if it is not ignored), it is possible to override specific values from the standalone config by prepending the entered value with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("override:")]),_v(".")])]),_v(" "),_c('h2',{attrs:{"id":"author-config-csv-2"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#author-config-csv-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Optionally, you can use an "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(" (which should be in the same directory as the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(" file) to provide more details about the authors to analyze ("),_c('a',{attrs:{"href":"/RepoSense/ug/author-config.csv"}},[_v("example")]),_v("). It should contain the following columns:")]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Column Name")]),_v(" "),_c('th',[_v("Explanation")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_v("Repository's Location"),_c('sup',[_v("*")])]),_v(" "),_c('td',[_v("Same as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(". Default: all the repos in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(".")])]),_v(" "),_c('tr',[_c('td',[_v("Branch")]),_v(" "),_c('td',[_v("The branch to analyze for this author, e.g., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("master")]),_v(". Default: the author will be bound to all the repos in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(" that has the same repo's location, regardless of branch.")])]),_v(" "),_c('tr',[_c('td',[_v("Author's Git Host ID"),_c('sup',[_v("#")]),_v(" "),_c('span',{staticClass:"badge bg-danger"},[_v("mandatory")])]),_v(" "),_c('td',[_v("Username of the target author's profile on GitHub, GitLab or Bitbucket, e.g."),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("JohnDoe")]),_v(".")])]),_v(" "),_c('tr',[_c('td',[_v("Author's Emails"),_c('sup',[_v("*")])]),_v(" "),_c('td',[_v("Associated emails of the author. For GitHub users, this can be found in your "),_c('a',{attrs:{"href":"https://github.com/settings/emails"}},[_v("GitHub settings")]),_v(".")])]),_v(" "),_c('tr',[_c('td',[_v("Author's Display Name")]),_v(" "),_c('td',[_v("The name to display for the author. Default: author's username.")])]),_v(" "),_c('tr',[_c('td',[_v("Author's Git Author Name"),_c('sup',[_v("*")])]),_v(" "),_c('td',[_v("The meaning of "),_c('em',[_v("Git Author Name")]),_v(" is explained in "),_c('a',{attrs:{"href":"#a-note-about-git-author-name"}},[_c('em',[_v("A note about git author name")])]),_v(".")])]),_v(" "),_c('tr',[_c('td',[_v("Ignore Glob List"),_c('sup',[_v("*")])]),_v(" "),_c('td',[_v("Files to ignore for this author, in addition to files ignored by the patterns specified in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(". The path glob syntax is the same as that of Ignore Glob List in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(".")])])])])]),_c('p',[_c('sup',[_v("* "),_c('strong',[_v("Multi-value column")]),_v(": multiple values can be entered in this column using a semicolon "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(";")]),_v(" as the separator.")]),_v(" "),_c('br'),_v(" "),_c('sup',[_v("# For backward compatibility, "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Author's GitHub ID")]),_v(" is still accepted as the header in place of "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Author's Git Host ID")]),_v(".")])]),_v(" "),_c('p',[_v("If "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(" is not given and the repo has not provided author details in a standalone config file, all the authors of the repositories within the date range specified (if any) will be analyzed.")]),_v(" "),_c('p',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(" has some advanced syntax that can help to reduce duplication of the author's information. The syntax guide is given below:")]),_v(" "),_c('div',{staticClass:"indented-level0"},[_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('span',[_c('span',{staticClass:"glyphicon glyphicon-log-in",attrs:{"aria-hidden":"true"}})]),_v(" Appendix: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(" advanced syntax")])]},proxy:true}])},[_v(" "),_c('div',[_c('h1',{staticClass:"display-4",attrs:{"id":"appendix-author-config-csv-advanced-syntax-2"}},[_c('span',[_v("Appendix: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(" advanced syntax")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#appendix-author-config-csv-advanced-syntax-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{staticClass:"lead"},[_c('p',[_v("Given below are the advanced syntax available for "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(".")])]),_v(" "),_c('h2',{attrs:{"id":"multiple-repository-s-location-per-author-2"}},[_v("Multiple "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repository's Location")]),_v(" per author"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#multiple-repository-s-location-per-author-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('h4',{attrs:{"id":"specifying-multiple-repository-s-location-2"}},[_v("Specifying multiple "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repository's Location")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#specifying-multiple-repository-s-location-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("To specify multiple "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repository's Location")]),_v(" in a single row, we can use a semicolon "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(";")]),_v(" as a separator.")]),_v(" "),_c('p',[_v("Below is an example:")]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Repository's Location")]),_v(" "),_c('th',[_v("Branch")]),_v(" "),_c('th',[_v("Author's Git Host ID")]),_v(" "),_c('th',[_v("... Hidden columns")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://github.com/reposense/RepoSense.git;https://github.com/MarkBind/markbind.git")])]),_v(" "),_c('td',[_v("master")]),_v(" "),_c('td',[_v("sikai00")]),_v(" "),_c('td',[_v("--")])])])])]),_c('p',[_v("We have now furnished author details for both repositories in a single row, instead of having two individual rows per "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repository's Location")]),_v(".")]),_v(" "),_c('br'),_v(" "),_c('h4',{attrs:{"id":"specifying-repository-s-location-with-one-or-more-specific-branches-2"}},[_v("Specifying "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repository's Location")]),_v(" with one or more specific branches"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#specifying-repository-s-location-with-one-or-more-specific-branches-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("To list out one or more branches for a particular "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repository's Location")]),_v(", we can use a pipe "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("|")]),_v(" separator to demarcate the different branches.")]),_v(" "),_c('p',[_v("Below is an example:")]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Repository's Location")]),_v(" "),_c('th',[_v("Branch")]),_v(" "),_c('th',[_v("Author's Git Host ID")]),_v(" "),_c('th',[_v("... Hidden columns")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://github.com/reposense/RepoSense.git~master|release|cypress")])]),_v(" "),_c('td',[_v("master")]),_v(" "),_c('td',[_v("sikai00")]),_v(" "),_c('td',[_v("--")])])])])]),_c('p',[_v("We have now provided author details for three different branches in a single repo, using a single row.")]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("The branch specified through the delimiter syntax will take precedence over the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Branch")]),_v(" column.")])]),_v(" "),_c('h2',{attrs:{"id":"using-github-branch-url-as-repository-s-location-2"}},[_v("Using GitHub branch URL as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repository's Location")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#using-github-branch-url-as-repository-s-location-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("We can also use GitHub branch URL as copied from the address bar directly, to be able to quickly use the URL to specify the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repository's Location")]),_v(" and a specific "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Branch")]),_v(" at the same time.")]),_v(" "),_c('p',[_v("Below is an example:")]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Repository's Location")]),_v(" "),_c('th',[_v("Branch")]),_v(" "),_c('th',[_v("Author's Git Host ID")]),_v(" "),_c('th',[_v("... Hidden columns")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://github.com/reposense/RepoSense/tree/release")])]),_v(" "),_c('td'),_v(" "),_c('td',[_v("sikai00")]),_v(" "),_c('td',[_v("--")])])])])]),_c('p',[_v("There is no need to specify the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Branch")]),_v(" column now, as we have specified it through the GitHub branch URL.")]),_v(" "),_c('box',{attrs:{"type":"warning","seamless":""}},[_c('p',[_v("GitLab and BitBucket branch URL are not supported at the moment.")])]),_v(" "),_c('h2',{attrs:{"id":"combining-the-advanced-syntax-2"}},[_v("Combining the advanced syntax"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#combining-the-advanced-syntax-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("It is possible to combine the above-mentioned advanced syntax. By doing so, we can go from:")]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Repository's Location")]),_v(" "),_c('th',[_v("Branch")]),_v(" "),_c('th',[_v("Author's Git Host ID")]),_v(" "),_c('th',[_v("... Hidden columns")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://github.com/MarkBind/markbind/tree/vue3-migration")])]),_v(" "),_c('td'),_v(" "),_c('td',[_v("sikai00")]),_v(" "),_c('td',[_v("--")])]),_v(" "),_c('tr',[_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://github.com/reposense/RepoSense.git")])]),_v(" "),_c('td',[_v("master")]),_v(" "),_c('td',[_v("sikai00")]),_v(" "),_c('td',[_v("--")])]),_v(" "),_c('tr',[_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://github.com/reposense/RepoSense.git")])]),_v(" "),_c('td',[_v("cypress")]),_v(" "),_c('td',[_v("sikai00")]),_v(" "),_c('td',[_v("--")])])])])]),_c('p',[_v("to:")]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Repository's Location")]),_v(" "),_c('th',[_v("Branch")]),_v(" "),_c('th',[_v("Author's Git Host ID")]),_v(" "),_c('th',[_v("... Hidden columns")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://github.com/MarkBind/markbind/tree/vue3-migration;https://github.com/reposense/RepoSense.git~master|cypress")])]),_v(" "),_c('td'),_v(" "),_c('td',[_v("sikai00")]),_v(" "),_c('td',[_v("--")])])])])]),_c('br')],1)])],1),_v(" "),_c('p'),_v(" "),_c('h2',{attrs:{"id":"group-config-csv-2"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("group-config.csv")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#group-config-csv-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Optionally, you can provide a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("group-config.csv")]),_v("(which should be in the same directory as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(" file) to provide details on any custom groupings for files in specified repositories ("),_c('a',{attrs:{"href":"/RepoSense/ug/group-config.csv"}},[_v("example")]),_v("). It should contain the following columns:")]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Column Name")]),_v(" "),_c('th',[_v("Explanation")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_v("Repository's Location")]),_v(" "),_c('td',[_v("Same as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(". Default: all the repos in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")])])]),_v(" "),_c('tr',[_c('td',[_v("Group Name "),_c('span',{staticClass:"badge bg-danger"},[_v("mandatory")])]),_v(" "),_c('td',[_v("Name of the group, e.g.,"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("test")]),_v(".")])]),_v(" "),_c('tr',[_c('td',[_v("Globs * "),_c('span',{staticClass:"badge bg-danger"},[_v("mandatory")])]),_v(" "),_c('td',[_v("The list of file path globs to include for specified group, e.g.,"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("**/test/*;**.java")]),_v(".")])])])])]),_c('p',[_c('sup',[_v("* "),_c('strong',[_v("Multi-value column")]),_v(": multiple values can be entered in this column using a semicolon "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(";")]),_v(" as the separator.")])]),_v(" "),_c('p',[_v("Note that a file in a given repository should only be tagged to one group. "),_c('br'),_v("\ne.g.: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("example.java")]),_v(" in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("example-repo")]),_v(" can either be in the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("test")]),_v(" group or the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("code")]),_v(" group, but not in both "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("test")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("code")]),_v(" group. If multiple groups are specified for a given file, the latter group (i.e., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("code")]),_v(" group) is set for the file.")]),_v(" "),_c('h2',{attrs:{"id":"report-config-json-2"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("report-config.json")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#report-config-json-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("You can optionally use "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("report-config.json")]),_v(" to customize report generation by providing the following information. ("),_c('a',{attrs:{"href":"/RepoSense/ug/report-config.json"}},[_v("example")]),_v(")")]),_v(" "),_c('p',[_c('strong',[_v("Fields to provide")]),_v(":")]),_v(" "),_c('ul',[_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("title")]),_v(": Title of the generated report, which is also the title of the deployed dashboard. Default: \"RepoSense Report\"")])]),_v(" "),_c('div',{attrs:{"id":"section-standalone"}},[_c('h2',{attrs:{"id":"config-json-standalone-config-file-2"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("config.json")]),_v(" (standalone config file)"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#config-json-standalone-config-file-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Repo owners can provide the following additional information to RepoSense using a config file that we call the "),_c('strong',[_c('em',[_v("standalone config file")])]),_v(":")]),_v(" "),_c('ul',[_c('li',[_v("which files/authors/commits to analyze/omit")]),_v(" "),_c('li',[_v("which git and git host usernames belong to which authors")]),_v(" "),_c('li',[_v("the display of an author")])]),_v(" "),_c('p',[_v("To use this feature, add a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("_reposense/config.json")]),_v(" to the root of your repo using the format in the example below ("),_c('a',{attrs:{"href":"https://github.com/reposense/RepoSense/blob/master/_reposense/config.json"}},[_v("another example")]),_v(") and "),_c('strong',[_v("commit it")]),_v(" (reason: RepoSense can see committed code only):")]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"no-line-numbers hljs json"}},[_c('span',[_v("{\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"ignoreGlobList\"")]),_v(": ["),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"about-us/**\"")]),_v(", "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"**index.html\"")]),_v("],\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"formats\"")]),_v(": ["),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"html\"")]),_v(", "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"css\"")]),_v("],\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"ignoreCommitList\"")]),_v(": ["),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"90018e49f129ce7e0abdc8b18e91c9813588c601\"")]),_v(", "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"67890def\"")]),_v(", "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"abc123..def456\"")]),_v("],\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"ignoreAuthorList\"")]),_v(": ["),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"charlie\"")]),_v("],\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"authors\"")]),_v(":\n")]),_c('span',[_v(" [\n")]),_c('span',[_v(" {\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"gitId\"")]),_v(": "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"alice\"")]),_v(",\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"emails\"")]),_v(": ["),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"alice@example.com\"")]),_v(", "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"alicet@example.com\"")]),_v("],\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"displayName\"")]),_v(": "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"Alice T.\"")]),_v(",\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"authorNames\"")]),_v(": ["),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"AT\"")]),_v(", "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"A\"")]),_v("],\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"ignoreGlobList\"")]),_v(": ["),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"**.css\"")]),_v("]\n")]),_c('span',[_v(" },\n")]),_c('span',[_v(" {\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"gitId\"")]),_v(": "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"bob\"")]),_v("\n")]),_c('span',[_v(" }\n")]),_c('span',[_v(" ]\n")]),_c('span',[_v("}\n")])])]),_c('p',[_v("Note: all fields are optional unless specified otherwise.")]),_v(" "),_c('p',[_c('strong',[_v("Fields to provide "),_c('em',[_v("repository-level")]),_v(" info")]),_v(":")]),_v(" "),_c('ul',[_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ignoreGlobList")]),_v(": Folders/files to ignore, specified using the "),_c('a',{attrs:{"href":"https://docs.oracle.com/javase/tutorial/essential/io/fileOps.html#glob"}},[_c('em',[_v("glob format")])]),_v(".")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("formats")]),_v(": File formats to analyze. Binary file formats, such as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("png")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("jpg")]),_v(", will be automatically labelled as the file type "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("binary")]),_v(" in the generated report. Default: all file formats")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ignoreCommitList")]),_v(": The list of commits to ignore during analysis. For accurate results, the commits should be provided with their full hash. Additionally, a range of commits can be specified using the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("..")]),_v(" notation e.g. "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("abc123..def456")]),_v(" (both inclusive).")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ignoreAuthorList")]),_v(": The list of authors to ignore during analysis. Authors specified in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("authors")]),_v(" field or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(" will be also be omitted if they are in this list. Authors should be specified by their "),_c('a',{attrs:{"href":"#a-note-about-git-author-name"}},[_v("Git Author Name")]),_v(".")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("fileSizeLimit")]),_v(": A file size limit for the repository in bytes as a single number without units, that will override the default file size limit. If not specified, the default file size limit will continue to be used.")])]),_v(" "),_c('p',[_c('strong',[_v("Fields to provide "),_c('em',[_v("author-level")]),_v(" info")]),_v(":"),_c('br'),_v("\nNote: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("authors")]),_v(" field should contain "),_c('em',[_v("all")]),_v(" authors that should be captured in the analysis.")]),_v(" "),_c('ul',[_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("gitId")]),_v(": Username of the author. "),_c('span',{staticClass:"badge bg-danger"},[_v("mandatory")]),_v(" field.")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("emails")]),_v(": Associated git emails of the author. For GitHub, this can be found in your "),_c('a',{attrs:{"href":"https://github.com/settings/emails"}},[_v("GitHub settings")]),_v(".")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("displayName")]),_v(": Name to display on the report for this author.")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("authorNames")]),_v(": Git Author Name(s) used in the author's commits. By default, RepoSense assumes an author would use their remote Git Host username as the Git username too. The meaning of "),_c('em',[_v("Git Author Name")]),_v(" is explained in "),_c('a',{attrs:{"href":"#a-note-about-git-author-name"}},[_c('em',[_v("A note about git author name")])]),_v(".")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ignoreGlobList")]),_v(": "),_c('em',[_v("Additional")]),_v(" (i.e. on top of the repo-level "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ignoreGlobList")]),_v(") folders/files to ignore for a specific author. The path glob syntax is specified by the "),_c('a',{attrs:{"href":"https://docs.oracle.com/javase/tutorial/essential/io/fileOps.html#glob"}},[_c('em',[_v("glob format")])]),_v(". In the example above, the actual "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ignoreGlobList")]),_v(" for "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("alice")]),_v(" would be "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("[\"about-us/**\", \"**index.html\", \"**.css\"]")]),_v(".")])]),_v(" "),_c('p',[_v("To verify your standalone configuration is as intended, add the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("_reposense/config.json")]),_v(" to your local copy of repo and run RepoSense against it as follows:"),_c('br')]),_v(" "),_c('ul',[_c('li',[_v("Format: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar --repo LOCAL_REPO_LOCATION")]),_v(" "),_c('br')]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar --repo c:/myRepose/foo/bar")]),_c('br'),_v("\nAfter that, view the report to see if the configuration you specified in the config file is being reflected correctly in the report.")])]),_v(" "),_c('h2',{attrs:{"id":"a-note-about-git-author-name-2"}},[_v("A note about git author name"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#a-note-about-git-author-name-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Git Author Name")]),_v(" refers to the customizable author's display name set in the local "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(".gitconfig")]),_v(" file. For example, in the Git Log's display:")]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"no-line-numbers hljs"}},[_c('span',[_v("...\n")]),_c('span',[_v("commit cd7f610e0becbdf331d5231887d8010a689f87c7\n")]),_c('span',[_v("Author: ConfiguredAuthorName \n")]),_c('span',[_v("Date: Fri Feb 9 19:14:41 2018 +0800\n")]),_c('span',[_v("\n")]),_c('span',[_v(" Make some changes to show my new author's name\n")]),_c('span',[_v("\n")]),_c('span',[_v("commit e3f699fd4ef128eebce98d5b4e5b3bb06a512f49\n")]),_c('span',[_v("Author: ActualGitHostId \n")]),_c('span',[_v("Date: Fri Feb 9 19:13:13 2018 +0800\n")]),_c('span',[_v("\n")]),_c('span',[_v(" Initial commit\n")]),_c('span',[_v(" ...\n")])])]),_c('p',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ActualGitHostId")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ConfiguredAuthorName")]),_v(" are both "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Git Author Name")]),_v(" of the same author."),_c('br'),_v("\nTo find the author name that you are currently using for your current git repository, run the following command within your git repository:")]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"no-line-numbers hljs"}},[_c('span',[_v("git config user.name\n")])])]),_c('p',[_v("To set the author name to the value you want (e.g., to set it to your GitHub username) for your current git repository, you can use the following command ("),_c('a',{attrs:{"href":"https://www.git-tower.com/learn/git/faq/change-author-name-email"}},[_v("more info")]),_v("):")]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"no-line-numbers hljs"}},[_c('span',[_v("git config user.name \"YOUR_AUTHOR_NAME”\n")])])]),_c('p',[_v("To set the author name to use a default value you want for future git repositories, you can use the following command:")]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"no-line-numbers hljs"}},[_c('span',[_v("git config --global user.name \"YOUR_AUTHOR_NAME”\n")])])]),_c('p',[_v("RepoSense expects the Git Author Name to be the same as author's username on the Git hosting platform (GitHub, GitLab, BitBucket). If an author's "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Git Author Name")]),_v(" is different from their username on the Git hosting platform, the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Git Author Name")]),_v(" needs to be specified in the standalone config file. If the author has more than one "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Git Author Name")]),_v(", multiple values can be entered too.")]),_v(" "),_c('box',{attrs:{"type":"warning","seamless":""}},[_c('p',[_v("Note: Symbols such as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("\"")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("!")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("/")]),_v(" etc. in your author name will be omitted, which may reduce the accuracy of the analysis if 2 names in the repository are approximately similar.")])])],1),_v(" "),_c('div',{attrs:{"id":"section-blurbs"}},[_c('h2',{attrs:{"id":"blurbs-md-2"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("blurbs.md")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#blurbs-md-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("You can optionally use "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("blurbs.md")]),_v(" to add blurbs in Markdown syntax for repository branches. These blurbs will be seen when grouping by "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repo/Branch")]),_v(". ("),_c('a',{attrs:{"href":"https://github.com/reposense/RepoSense/blob/master/docs/ug/blurbs.md"}},[_v("example")]),_v(")")]),_v(" "),_c('p',[_c('strong',[_v("Format")]),_v(":")]),_v(" "),_c('ul',[_c('li',[_v("First line in section: Link to the repository branch.")]),_v(" "),_c('li',[_v("Second line onwards: Blurb content.")]),_v(" "),_c('li',[_v("Delimiter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("")]),_v(". Everything on the line after the delimiter will be ignored.")])])])],1)])],1),_v(" "),_c('p')]),_v(" "),_c('p',[_c('span',{staticClass:"badge bg-dark bigger-level0"},[_v("Step 8")]),_v(" "),_c('strong',[_v("View the generated report:")])]),_v(" "),_c('ol',[_c('li',[_v("Go to the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Settings")]),_v(" page of your fork in GitHub.")]),_v(" "),_c('li',[_v("Under the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("GitHub Pages")]),_v(" section, look for "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Your site is published at [LINK]")]),_v(". It should look something like "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://[YOUR_GITHUB_ID].github.io/publish-RepoSense")]),_v(".\n"),_c('a',{attrs:{"href":"/RepoSense/images/publishingguide-githubsetting.jpg","target":"_self"}},[_c('img',{staticClass:"img-fluid",attrs:{"src":"/RepoSense/images/publishingguide-githubsetting.jpg","alt":"GitHub Setting","title":"GitHub Setting"}})])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("It takes a few minutes for report generation. Meanwhile, you can monitor the progress live at "),_c('a',{attrs:{"href":"https://travis-ci.org/dashboard/builds"}},[_v("Travis-CI's Builds")]),_v(".")])])],1),_v(" "),_c('h2',{attrs:{"id":"updating-the-report-2"}},[_v("Updating the report"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#updating-the-report-2","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_v("Manual:")]),_v(" Travis UI has a way for you to trigger a build, using which you can cause the report to be updated.")]),_v(" "),_c('ol',[_c('li',[_v("Go to "),_c('a',{attrs:{"href":"https://travis-ci.org/search/publish-RepoSense/"}},[_v("your fork in Travis-CI")]),_v(", click on "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("More options")]),_v(" on the right then "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Trigger build")]),_v(".")]),_v(" "),_c('li',[_v("In the pop up, click "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Trigger custom build")]),_v(".")])]),_v(" "),_c('p',[_c('strong',[_v("Automated:")]),_v(" "),_c('a',{attrs:{"href":"https://travis-ci.org/"}},[_v("Travis-CI")]),_v(" offers "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Cron Jobs")]),_v(" in intervals of daily, weekly or monthly.")]),_v(" "),_c('ol',[_c('li',[_v("Login to "),_c('a',{attrs:{"href":"https://travis-ci.org/"}},[_v("Travis-CI")]),_v(".")]),_v(" "),_c('li',[_v("Go to "),_c('a',{attrs:{"href":"https://travis-ci.org/search/publish-RepoSense/"}},[_v("your fork in Travis-CI")]),_v(", click on "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("More options")]),_v(" on the right then access "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Settings")]),_v(".")]),_v(" "),_c('li',[_v("Under "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Cron Jobs")]),_v(", choose "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("master")]),_v(" for "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Branch")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Always run")]),_v(" for "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Options")]),_v(" and pick an "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Interval")]),_v(" of your choice; then click "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Add")]),_v(".\n"),_c('a',{attrs:{"href":"/RepoSense/images/publishingguide-cronsetting.jpg","target":"_self"}},[_c('img',{staticClass:"img-fluid",attrs:{"src":"/RepoSense/images/publishingguide-cronsetting.jpg","alt":"Travis-CI Cron","title":"Travis-CI Cron"}})])])])])])],1),_v(" "),_c('p'),_v(" "),_c('div',{staticClass:"indented-level0"},[_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('span',[_c('span',{staticClass:"glyphicon glyphicon-log-in",attrs:{"aria-hidden":"true"}})]),_v(" Appendix: "),_c('strong',[_v("Using RepoSense with Netlify")])])]},proxy:true}])},[_v(" "),_c('div',[_c('h1',{staticClass:"display-4",attrs:{"id":"appendix-reposense-with-netlify"}},[_c('span',[_v("Appendix: RepoSense with Netlify")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#appendix-reposense-with-netlify","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{attrs:{"id":"section-setting-up"}},[_c('box',{attrs:{"type":"warning","seamless":""}},[_c('p',[_v("Note that Netlify has a low limit for free tier users (only 300 "),_c('em',[_v("build minutes")]),_v(" per month as at June 2020 -- a single report generation can take 2-3 build minutes, longer if your report includes many/big repositories).")])]),_v(" "),_c('h2',{attrs:{"id":"setting-up-3"}},[_v("Setting up"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#setting-up-3","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('span',{staticClass:"badge bg-dark bigger-level0"},[_v("Step 1")]),_v(" "),_c('strong',[_v("Fork the "),_c('em',[_v("publish-RepoSense")]),_v(" repository")]),_v(" using this "),_c('a',{attrs:{"href":"https://github.com/RepoSense/publish-RepoSense/fork"}},[_v("link")]),_v(". Optionally, you can rename the fork to match your RepoSense report e.g., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("project-code-dashboard")]),_v(".")]),_v(" "),_c('p',[_c('span',{staticClass:"badge bg-dark bigger-level0"},[_v("Step 2")]),_v(" "),_c('strong',[_v("Set up Netlify for your fork")]),_v(" as described in this "),_c('a',{attrs:{"href":"https://www.netlify.com/blog/2016/09/29/a-step-by-step-guide-deploying-on-netlify/"}},[_v("guide")]),_v("."),_c('br'),_v(" "),_c('mark',[_v("You will need to use the following in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Step 5: Configure Your Settings")]),_v(" of that guide")]),_v(":")]),_v(" "),_c('ul',[_c('li',[_v("build command: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("pip install requests && ./run.sh")]),_c('br')]),_v(" "),_c('li',[_v("publish directory: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./reposense-report")])])]),_v(" "),_c('p',[_v("After Netlify finishes building the site, you should be able to see a dummy report at the URL of your Netlify site.")]),_v(" "),_c('p',[_c('span',{staticClass:"badge bg-dark bigger-level0"},[_v("Step 3")]),_v(" "),_c('strong',[_v("Generate the report you want")]),_v(" by updating the settings in your fork.")]),_v(" "),_c('ol',[_c('li',[_v("Go to the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("run.sh")]),_v(" file of your fork (on GitHub).")]),_v(" "),_c('li',[_v("Update the last line (i.e., the command for running RepoSense) to match the report you want to generate:"),_c('br'),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar --repos FULL_REPO_URL")]),_v(" (assuming you want to generate a default report for just one repo)"),_c('br'),_v("\ne.g., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar --repos https://github.com/reposense/RepoSense.git")]),_v(" ("),_c('mark',[_v("note the .git at the end of the repo URL")]),_v(")")]),_v(" "),_c('li',[_v("Commit the file. This will trigger Netlify to rebuild the report.")]),_v(" "),_c('li',[_v("Go to the URL of your Netlify site to see the updated RepoSense report (it might take about 2-5 minutes for Netlify to generate the report).")])])],1),_v(" "),_c('div',{attrs:{"id":"section-pr-previews"}},[_c('h2',{attrs:{"id":"pr-previews"}},[_v("PR previews"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#pr-previews","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("After setting up Netlify for your repo containing RepoSense settings, when a PR comes in to that repo to update any setting, you can scroll down the PR page and in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("All checks have passed")]),_v(", click on the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Details")]),_v(" beside "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("deploy/netlify — Deploy preview ready!")]),_v(" to see a preview of the report as per the changes in the PR.\n"),_c('a',{attrs:{"href":"/RepoSense/images/publishingguide-netlifypreview.png","target":"_self"}},[_c('img',{staticClass:"img-fluid",attrs:{"src":"/RepoSense/images/publishingguide-netlifypreview.png","alt":"Netlify Preview","title":"Netlify Preview"}})])])]),_v(" "),_c('h2',{attrs:{"id":"updating-the-report-3"}},[_v("Updating the report"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#updating-the-report-3","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_v("Manual:")]),_v(" Netlify UI has a way for you to trigger a build, using which you can cause the report to be updated.")]),_v(" "),_c('p',[_c('strong',[_v("Automated:")]),_v(" Netlify's can be set up to update the report whenever a target repo of your report is updated, provided you are able to update the target repos in a certain way.")]),_v(" "),_c('ol',[_c('li',[_c('p',[_v("Click on "),_c('strong',[_v("Settings")]),_v(" in the top, choose "),_c('strong',[_v("Build & deploy")]),_v(" from the left panel and scroll to "),_c('strong',[_v("Build hooks")]),_v(".\n"),_c('a',{attrs:{"href":"/RepoSense/images/using-netlify-build-hooks.png","target":"_self"}},[_c('img',{staticClass:"img-fluid",attrs:{"src":"/RepoSense/images/using-netlify-build-hooks.png","alt":"Build hooks"}})])])]),_v(" "),_c('li',[_c('p',[_v("Click "),_c('strong',[_v("Add build hook")]),_v(", give your webhook a name, and choose the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("master")]),_v(" branch to build. A Netlify URL will be generated.")])]),_v(" "),_c('li',[_c('p',[_v("Go to your target repository (the repository you want to analyze) and click on "),_c('strong',[_v("Settings")]),_v(".")])]),_v(" "),_c('li',[_c('p',[_v("Select "),_c('strong',[_v("Webhooks")]),_v(" on left panel and click on "),_c('strong',[_v("Add webhook")]),_v(".\n"),_c('a',{attrs:{"href":"/RepoSense/images/using-netlify-add-hook.png","target":"_self"}},[_c('img',{staticClass:"img-fluid",attrs:{"src":"/RepoSense/images/using-netlify-add-hook.png","alt":"Add webhook"}})])])]),_v(" "),_c('li',[_c('p',[_v("Copy the Netlify URL and paste it in the URL form field.\n"),_c('a',{attrs:{"href":"/RepoSense/images/using-netlify-url.png","target":"_self"}},[_c('img',{staticClass:"img-fluid",attrs:{"src":"/RepoSense/images/using-netlify-url.png","alt":"Webhook url"}})])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Note: Although the build url is not that secretive, it should be kept safe to prevent any misuse.")])])],1),_v(" "),_c('li',[_c('p',[_v("Select "),_c('strong',[_v("application.json")]),_v(" as content type.")])]),_v(" "),_c('li',[_c('p',[_v("Select "),_c('strong',[_v("Let me select individual events")]),_v(" and based on your requirements check the checkboxes.")])]),_v(" "),_c('li',[_c('p',[_v("Leave the "),_c('strong',[_v("Active")]),_v(" checkbox checked.")])]),_v(" "),_c('li',[_c('p',[_v("Click on "),_c('strong',[_v("Add webhook")]),_v(" to save the webhook and add it.")])])])])])],1),_v(" "),_c('p'),_v(" "),_m(8),_v(" "),_m(9),_v(" "),_c('p',[_v("A sample iframe would look like:")]),_v(" "),_m(10),_c('p',[_v("Adjust the width and height to the desired dimensions as required.")])]),_v(" "),_c('overlay-source',{staticClass:"fixed-header-padding",attrs:{"id":"page-nav","tag-name":"nav","to":"page-nav"}},[_c('div',{staticClass:"nav-component slim-scroll"},[_c('overlay-source',{staticClass:"nav nav-pills flex-column my-0 small no-flex-wrap",attrs:{"id":"mb-page-nav","tag-name":"nav","to":"mb-page-nav"}},[_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#sharing-reports"}},[_v("Sharing reports‎")]),_v(" "),_c('nav',{staticClass:"nav nav-pills flex-column my-0 nested no-flex-wrap"},[_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#share-privately"}},[_v("Share privately‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#publish-on-the-web"}},[_v("Publish on the web‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#embeddable-widgets"}},[_v("Embeddable Widgets‎")])])])],1)])],1),_v(" "),_m(11)])} }; var pageVueStaticRenderFns = [function anonymous( ) { @@ -38,6 +38,6 @@ with(this){return _c('p',[_v("Published reports can additionally be embedded in with(this){return _c('pre',[_c('code',{pre:true,attrs:{"class":"hljs html"}},[_c('span',[_c('span',{pre:true,attrs:{"class":"hljs-tag"}},[_v("<"),_c('span',{pre:true,attrs:{"class":"hljs-name"}},[_v("iframe")]),_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("src")]),_v("="),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"XXX\"")]),_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("frameborder")]),_v("="),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"0\"")]),_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("width")]),_v("="),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"800px\"")]),_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("height")]),_v("="),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"XXXpx\"")]),_v(">")]),_c('span',{pre:true,attrs:{"class":"hljs-tag"}},[_v("")]),_v("\n")])])])} },function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('small',[_v("["),_c('span',[_c('strong',[_v("Powered by")])]),_v(" "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"30"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.2")]),_v(", generated on Tue, 14 May 2024, 13:12:51 UTC]")])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('small',[_v("["),_c('span',[_c('strong',[_v("Powered by")])]),_v(" "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"30"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.2")]),_v(", generated on Thu, 16 May 2024, 22:31:25 UTC]")])])])} }]; \ No newline at end of file diff --git a/ug/title.html b/ug/title.html index bf7098e3c3..dee5ce85a5 100644 --- a/ug/title.html +++ b/ug/title.html @@ -14,7 +14,7 @@

    You are looking at the user documentation for the most recent master branch of RepoSense (not released to the public yet). The documentation for the latest public release is here.

    RepoSense

    RepoSense is a powerful tool for analyzing repositories. It provides valuable insights into your codebase, helping you understand the development patterns, identify areas for improvement, and track the contributions of individual team members.

    Features

    • Repository analysis: Gain a comprehensive overview of your codebase, including commit statistics, file changes, and code ownership.
    • Contribution tracking: Easily track the contributions made by each team member, including the number of commits, lines of code added/removed, and more.
    • Visualization: Visualize your repository's history and changes over time through interactive graphs and charts.
    [Powered by MarkBind 5.5.2, generated on Tue, 14 May 2024, 13:12:51 UTC]
    +

    You are looking at the user documentation for the most recent master branch of RepoSense (not released to the public yet). The documentation for the latest public release is here.

    RepoSense

    RepoSense is a powerful tool for analyzing repositories. It provides valuable insights into your codebase, helping you understand the development patterns, identify areas for improvement, and track the contributions of individual team members.

    Features

    • Repository analysis: Gain a comprehensive overview of your codebase, including commit statistics, file changes, and code ownership.
    • Contribution tracking: Easily track the contributions made by each team member, including the number of commits, lines of code added/removed, and more.
    • Visualization: Visualize your repository's history and changes over time through interactive graphs and charts.
    [Powered by MarkBind 5.5.2, generated on Thu, 16 May 2024, 22:31:25 UTC]
    diff --git a/ug/title.page-vue-render.js b/ug/title.page-vue-render.js index f320c004f1..759bcfd49b 100644 --- a/ug/title.page-vue-render.js +++ b/ug/title.page-vue-render.js @@ -1,7 +1,7 @@ var pageVueRenderFn = function anonymous( ) { -with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"fixed":""}},[_c('navbar',{attrs:{"type":"dark"},scopedSlots:_u([{key:"brand",fn:function(){return [_c('a',{staticClass:"navbar-brand",attrs:{"href":"/index.html","title":"Home"}},[_c('img',{attrs:{"width":"30px","src":"/favicon.ico"}})])]},proxy:true},{key:"right",fn:function(){return [_c('li',[_c('form',{staticClass:"navbar-form"},[_c('searchbar',{attrs:{"data":searchData,"placeholder":"Search","on-hit":searchCallback,"menu-align-right":""}})],1)])]},proxy:true}])},[_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/index.html"}},[_v("HOME")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/showcase.html"}},[_v("SHOWCASE")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/ug/index.html"}},[_v("USER GUIDE")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/dg/index.html"}},[_v("DEVELOPER GUIDE")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/about.html"}},[_v("ABOUT")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/contact.html"}},[_v("CONTACT")])]),_v(" "),_c('li',{attrs:{"tags":"dev"}},[_c('a',{staticClass:"nav-link",attrs:{"href":"https://reposense.org","target":"_blank"}},[_c('span',[_c('span',{staticClass:"fas fa-external-link-alt",attrs:{"aria-hidden":"true"}}),_v(" PRODUCTION SITE")])])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"https://github.com/RepoSense/reposense","target":"_blank"}},[_c('span',[_c('span',{staticClass:"fab fa-github",attrs:{"aria-hidden":"true"}})])])])]),_v(" "),_m(0)],1),_v(" "),_c('div',{attrs:{"id":"flex-body"}},[_c('overlay-source',{staticClass:"fixed-header-padding",attrs:{"id":"site-nav","tag-name":"nav","to":"site-nav"}},[_c('div',{staticClass:"site-nav-top"},[_c('div',{staticClass:"font-weight-bold mb-2",staticStyle:{"font-size":"1.25rem"}},[_c('span',[_c('strong',[_c('strong',[_v("USER GUIDE")])])])])]),_v(" "),_c('div',{staticClass:"nav-component slim-scroll"},[_c('div',[_c('site-nav',[_c('overlay-source',{staticClass:"site-nav-list site-nav-list-root",attrs:{"tag-name":"ul","to":"mb-site-nav"}},[_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/index.html"}},[_c('strong',[_v("Overview")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/generatingReports.html"}},[_c('strong',[_v("Generating reports")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/usingReports.html"}},[_c('strong',[_v("Using reports")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/customizingReports.html"}},[_c('strong',[_v("Customizing reports")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/sharingReports.html"}},[_c('strong',[_v("Sharing reports")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('strong',[_v("Appendices")]),_v(" "),_c('div',{staticClass:"site-nav-dropdown-btn-container"},[_c('i',{staticClass:"site-nav-dropdown-btn-icon site-nav-rotate-icon",attrs:{"onclick":"handleSiteNavClick(this.parentNode.parentNode, false); event.stopPropagation();"}},[_c('span',{staticClass:"glyphicon glyphicon-menu-down",attrs:{"aria-hidden":"true"}})])])]),_c('ul',{staticClass:"site-nav-dropdown-container site-nav-dropdown-container-open site-nav-list"},[_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/cli.html"}},[_v("CLI syntax reference")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/configFiles.html"}},[_v("Config files format")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/authorConfigSyntax.html"}},[_v("Advanced syntax: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/usingAuthorTags.html"}},[_v("Using "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("@@author")]),_v(" tags")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/withNetlify.html"}},[_v("RepoSense with Netlify")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/withGithubActions.html"}},[_v("RepoSense with GitHub Actions")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/withTravis.html"}},[_v("RepoSense with Travis")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/runSh.html"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("run.sh")]),_v(" format")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/faq.html"}},[_v("FAQ")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/troubleshooting.html"}},[_v("Troubleshooting")])])])])])])],1)],1)])]),_v(" "),_m(1)],1),_v(" "),_m(2)])} +with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"fixed":""}},[_c('navbar',{attrs:{"type":"dark"},scopedSlots:_u([{key:"brand",fn:function(){return [_c('a',{staticClass:"navbar-brand",attrs:{"href":"/index.html","title":"Home"}},[_c('img',{attrs:{"width":"30px","src":"/favicon.ico"}})])]},proxy:true},{key:"right",fn:function(){return [_c('li',[_c('form',{staticClass:"navbar-form"},[_c('searchbar',{attrs:{"data":searchData,"placeholder":"Search","on-hit":searchCallback,"menu-align-right":""}})],1)])]},proxy:true}])},[_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/index.html"}},[_v("HOME")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/showcase.html"}},[_v("SHOWCASE")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/ug/index.html"}},[_v("USER GUIDE")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/dg/index.html"}},[_v("DEVELOPER GUIDE")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/about.html"}},[_v("ABOUT")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/contact.html"}},[_v("CONTACT")])]),_v(" "),_c('li',{attrs:{"tags":"dev"}},[_c('a',{staticClass:"nav-link",attrs:{"href":"https://reposense.org","target":"_blank"}},[_c('span',[_c('span',{staticClass:"fas fa-external-link-alt",attrs:{"aria-hidden":"true"}}),_v(" PRODUCTION SITE")])])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"https://github.com/RepoSense/reposense","target":"_blank"}},[_c('span',[_c('span',{staticClass:"fab fa-github",attrs:{"aria-hidden":"true"}})])])])]),_v(" "),_m(0)],1),_v(" "),_c('div',{attrs:{"id":"flex-body"}},[_c('overlay-source',{staticClass:"fixed-header-padding",attrs:{"id":"site-nav","tag-name":"nav","to":"site-nav"}},[_c('div',{staticClass:"site-nav-top"},[_c('div',{staticClass:"font-weight-bold mb-2",staticStyle:{"font-size":"1.25rem"}},[_c('span',[_c('strong',[_c('strong',[_v("USER GUIDE")])])])])]),_v(" "),_c('div',{staticClass:"nav-component slim-scroll"},[_c('div',[_c('site-nav',[_c('overlay-source',{staticClass:"site-nav-list site-nav-list-root",attrs:{"tag-name":"ul","to":"mb-site-nav"}},[_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/index.html"}},[_c('strong',[_v("Overview")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/generatingReports.html"}},[_c('strong',[_v("Generating reports")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/usingReports.html"}},[_c('strong',[_v("Using reports")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/customizingReports.html"}},[_c('strong',[_v("Customizing reports")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/sharingReports.html"}},[_c('strong',[_v("Sharing reports")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('strong',[_v("Appendices")]),_v(" "),_c('div',{staticClass:"site-nav-dropdown-btn-container"},[_c('i',{staticClass:"site-nav-dropdown-btn-icon site-nav-rotate-icon",attrs:{"onclick":"handleSiteNavClick(this.parentNode.parentNode, false); event.stopPropagation();"}},[_c('span',{staticClass:"glyphicon glyphicon-menu-down",attrs:{"aria-hidden":"true"}})])])]),_c('ul',{staticClass:"site-nav-dropdown-container site-nav-dropdown-container-open site-nav-list"},[_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/cli.html"}},[_v("CLI syntax reference")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/configFiles.html"}},[_v("Config files format")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/authorConfigSyntax.html"}},[_v("Advanced syntax: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/usingAuthorTags.html"}},[_v("Using "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("@@author")]),_v(" tags")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/withNetlify.html"}},[_v("RepoSense with Netlify")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/withGithubActions.html"}},[_v("RepoSense with GitHub Actions")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/withTravis.html"}},[_v("RepoSense with Travis")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/runSh.html"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("run.sh")]),_v(" format")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/faq.html"}},[_v("FAQ")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/troubleshooting.html"}},[_v("Troubleshooting")])])])])])])],1)],1)])]),_v(" "),_m(1),_v(" "),_c('overlay-source',{staticClass:"fixed-header-padding",attrs:{"id":"page-nav","tag-name":"nav","to":"page-nav"}},[_c('div',{staticClass:"nav-component slim-scroll"})])],1),_v(" "),_m(2)])} }; var pageVueStaticRenderFns = [function anonymous( ) { @@ -11,6 +11,6 @@ with(this){return _c('div',{staticClass:"text-center bg-warning p-2",attrs:{"tag with(this){return _c('div',{staticClass:"fixed-header-padding",attrs:{"id":"content-wrapper"}},[_c('h1',{attrs:{"id":"reposense"}},[_v("RepoSense"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#reposense","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("RepoSense is a powerful tool for analyzing repositories. It provides valuable insights into your codebase, helping you understand the development patterns, identify areas for improvement, and track the contributions of individual team members.")]),_v(" "),_c('h2',{attrs:{"id":"features"}},[_v("Features"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#features","onclick":"event.stopPropagation()"}})]),_v(" "),_c('ul',[_c('li',[_v("Repository analysis: Gain a comprehensive overview of your codebase, including commit statistics, file changes, and code ownership.")]),_v(" "),_c('li',[_v("Contribution tracking: Easily track the contributions made by each team member, including the number of commits, lines of code added/removed, and more.")]),_v(" "),_c('li',[_v("Visualization: Visualize your repository's history and changes over time through interactive graphs and charts.")])])])} },function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('small',[_v("["),_c('span',[_c('strong',[_v("Powered by")])]),_v(" "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"30"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.2")]),_v(", generated on Tue, 14 May 2024, 13:12:51 UTC]")])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('small',[_v("["),_c('span',[_c('strong',[_v("Powered by")])]),_v(" "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"30"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.2")]),_v(", generated on Thu, 16 May 2024, 22:31:25 UTC]")])])])} }]; \ No newline at end of file diff --git a/ug/troubleshooting.html b/ug/troubleshooting.html index add35ae49d..eaa7c6747c 100644 --- a/ug/troubleshooting.html +++ b/ug/troubleshooting.html @@ -11,14 +11,14 @@ - +

    You are looking at the user documentation for the most recent master branch of RepoSense (not released to the public yet). The documentation for the latest public release is here.

    Appendix: Troubleshooting

    Contributions missing in the ramp chart (but appear in the contribution bar and code panel)

    This is probably a case of giving an incorrect author name alias (or Git ID) in your author-config file.
    Please refer to A Note About Git Author Name above on how to find out the correct author name you are using and how to change it.
    Also, ensure that you have added all author name aliases you may be using (if you are using multiple computers or have previously changed your author name).
    Alternatively, you may choose to configure RepoSense to track the email associated with your local Git config or remote Git host email in a standalone config file or author-config file, which is more accurate compared to author name aliases. For GitHub, the associated email you are using can be found in your GitHub settings.

    Contribution bar and code panel is empty (despite a non-empty ramp chart)

    The contribution bar and code panel records the lines you have authored to the latest commit of the repository and branch you are analyzing. As such, it is possible that while you have lots of committed contributions, your final authorship contribution is low. This happens if you have only deleted lines or someone else has overwritten your code and taken authorship for it (currently, RepoSense does not have the functionality to track overwritten lines).
    -It is also possible that another user has overridden the authorship of your lines using the @@author tags.

    RepoSense is not using the standalone config file in my local repository

    Ensure that you have committed the changes to your standalone config file first before running the analysis, as RepoSense is unable to detect uncommitted changes to your local repository.

    RepoSense fails on Windows (but works on Linux/Mac OS)

    Possibly, you may have some file names with special characters in them, which is disallowed in Windows OS. As such, RepoSense is unable to clone your repository fully, thus failing the analysis.

    Some file types are not shown in the file type filter even if I have included them in the file formats when generating the report

    The files of these types may be binary files. RepoSense will group binary files under one single file type binary. Common binary files include images (.jpg, .png), applications (.exe), zip files (.zip, .rar) and certain document types (.docx, .pptx).

    [Powered by MarkBind 5.5.2, generated on Tue, 14 May 2024, 13:12:51 UTC]
    +It is also possible that another user has overridden the authorship of your lines using the @@author tags.

    RepoSense is not using the standalone config file in my local repository

    Ensure that you have committed the changes to your standalone config file first before running the analysis, as RepoSense is unable to detect uncommitted changes to your local repository.

    RepoSense fails on Windows (but works on Linux/Mac OS)

    Possibly, you may have some file names with special characters in them, which is disallowed in Windows OS. As such, RepoSense is unable to clone your repository fully, thus failing the analysis.

    Some file types are not shown in the file type filter even if I have included them in the file formats when generating the report

    The files of these types may be binary files. RepoSense will group binary files under one single file type binary. Common binary files include images (.jpg, .png), applications (.exe), zip files (.zip, .rar) and certain document types (.docx, .pptx).

    [Powered by MarkBind 5.5.2, generated on Thu, 16 May 2024, 22:31:25 UTC]
    diff --git a/ug/troubleshooting.page-vue-render.js b/ug/troubleshooting.page-vue-render.js index ba80f0a91c..f4231f4569 100644 --- a/ug/troubleshooting.page-vue-render.js +++ b/ug/troubleshooting.page-vue-render.js @@ -1,7 +1,7 @@ var pageVueRenderFn = function anonymous( ) { -with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"fixed":""}},[_c('navbar',{attrs:{"type":"dark"},scopedSlots:_u([{key:"brand",fn:function(){return [_c('a',{staticClass:"navbar-brand",attrs:{"href":"/index.html","title":"Home"}},[_c('img',{attrs:{"width":"30px","src":"/favicon.ico"}})])]},proxy:true},{key:"right",fn:function(){return [_c('li',[_c('form',{staticClass:"navbar-form"},[_c('searchbar',{attrs:{"data":searchData,"placeholder":"Search","on-hit":searchCallback,"menu-align-right":""}})],1)])]},proxy:true}])},[_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/index.html"}},[_v("HOME")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/showcase.html"}},[_v("SHOWCASE")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/ug/index.html"}},[_v("USER GUIDE")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/dg/index.html"}},[_v("DEVELOPER GUIDE")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/about.html"}},[_v("ABOUT")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/contact.html"}},[_v("CONTACT")])]),_v(" "),_c('li',{attrs:{"tags":"dev"}},[_c('a',{staticClass:"nav-link",attrs:{"href":"https://reposense.org","target":"_blank"}},[_c('span',[_c('span',{staticClass:"fas fa-external-link-alt",attrs:{"aria-hidden":"true"}}),_v(" PRODUCTION SITE")])])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"https://github.com/RepoSense/reposense","target":"_blank"}},[_c('span',[_c('span',{staticClass:"fab fa-github",attrs:{"aria-hidden":"true"}})])])])]),_v(" "),_m(0)],1),_v(" "),_c('div',{attrs:{"id":"flex-body"}},[_c('overlay-source',{staticClass:"fixed-header-padding",attrs:{"id":"site-nav","tag-name":"nav","to":"site-nav"}},[_c('div',{staticClass:"site-nav-top"},[_c('div',{staticClass:"font-weight-bold mb-2",staticStyle:{"font-size":"1.25rem"}},[_c('span',[_c('strong',[_c('strong',[_v("USER GUIDE")])])])])]),_v(" "),_c('div',{staticClass:"nav-component slim-scroll"},[_c('div',[_c('site-nav',[_c('overlay-source',{staticClass:"site-nav-list site-nav-list-root",attrs:{"tag-name":"ul","to":"mb-site-nav"}},[_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/index.html"}},[_c('strong',[_v("Overview")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/generatingReports.html"}},[_c('strong',[_v("Generating reports")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/usingReports.html"}},[_c('strong',[_v("Using reports")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/customizingReports.html"}},[_c('strong',[_v("Customizing reports")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/sharingReports.html"}},[_c('strong',[_v("Sharing reports")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('strong',[_v("Appendices")]),_v(" "),_c('div',{staticClass:"site-nav-dropdown-btn-container"},[_c('i',{staticClass:"site-nav-dropdown-btn-icon site-nav-rotate-icon",attrs:{"onclick":"handleSiteNavClick(this.parentNode.parentNode, false); event.stopPropagation();"}},[_c('span',{staticClass:"glyphicon glyphicon-menu-down",attrs:{"aria-hidden":"true"}})])])]),_c('ul',{staticClass:"site-nav-dropdown-container site-nav-dropdown-container-open site-nav-list"},[_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/cli.html"}},[_v("CLI syntax reference")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/configFiles.html"}},[_v("Config files format")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/authorConfigSyntax.html"}},[_v("Advanced syntax: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/usingAuthorTags.html"}},[_v("Using "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("@@author")]),_v(" tags")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/withNetlify.html"}},[_v("RepoSense with Netlify")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/withGithubActions.html"}},[_v("RepoSense with GitHub Actions")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/withTravis.html"}},[_v("RepoSense with Travis")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/runSh.html"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("run.sh")]),_v(" format")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/faq.html"}},[_v("FAQ")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/troubleshooting.html"}},[_v("Troubleshooting")])])])])])])],1)],1)])]),_v(" "),_m(1)],1),_v(" "),_m(2)])} +with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"fixed":""}},[_c('navbar',{attrs:{"type":"dark"},scopedSlots:_u([{key:"brand",fn:function(){return [_c('a',{staticClass:"navbar-brand",attrs:{"href":"/index.html","title":"Home"}},[_c('img',{attrs:{"width":"30px","src":"/favicon.ico"}})])]},proxy:true},{key:"right",fn:function(){return [_c('li',[_c('form',{staticClass:"navbar-form"},[_c('searchbar',{attrs:{"data":searchData,"placeholder":"Search","on-hit":searchCallback,"menu-align-right":""}})],1)])]},proxy:true}])},[_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/index.html"}},[_v("HOME")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/showcase.html"}},[_v("SHOWCASE")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/ug/index.html"}},[_v("USER GUIDE")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/dg/index.html"}},[_v("DEVELOPER GUIDE")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/about.html"}},[_v("ABOUT")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/contact.html"}},[_v("CONTACT")])]),_v(" "),_c('li',{attrs:{"tags":"dev"}},[_c('a',{staticClass:"nav-link",attrs:{"href":"https://reposense.org","target":"_blank"}},[_c('span',[_c('span',{staticClass:"fas fa-external-link-alt",attrs:{"aria-hidden":"true"}}),_v(" PRODUCTION SITE")])])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"https://github.com/RepoSense/reposense","target":"_blank"}},[_c('span',[_c('span',{staticClass:"fab fa-github",attrs:{"aria-hidden":"true"}})])])])]),_v(" "),_m(0)],1),_v(" "),_c('div',{attrs:{"id":"flex-body"}},[_c('overlay-source',{staticClass:"fixed-header-padding",attrs:{"id":"site-nav","tag-name":"nav","to":"site-nav"}},[_c('div',{staticClass:"site-nav-top"},[_c('div',{staticClass:"font-weight-bold mb-2",staticStyle:{"font-size":"1.25rem"}},[_c('span',[_c('strong',[_c('strong',[_v("USER GUIDE")])])])])]),_v(" "),_c('div',{staticClass:"nav-component slim-scroll"},[_c('div',[_c('site-nav',[_c('overlay-source',{staticClass:"site-nav-list site-nav-list-root",attrs:{"tag-name":"ul","to":"mb-site-nav"}},[_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/index.html"}},[_c('strong',[_v("Overview")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/generatingReports.html"}},[_c('strong',[_v("Generating reports")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/usingReports.html"}},[_c('strong',[_v("Using reports")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/customizingReports.html"}},[_c('strong',[_v("Customizing reports")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/sharingReports.html"}},[_c('strong',[_v("Sharing reports")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('strong',[_v("Appendices")]),_v(" "),_c('div',{staticClass:"site-nav-dropdown-btn-container"},[_c('i',{staticClass:"site-nav-dropdown-btn-icon site-nav-rotate-icon",attrs:{"onclick":"handleSiteNavClick(this.parentNode.parentNode, false); event.stopPropagation();"}},[_c('span',{staticClass:"glyphicon glyphicon-menu-down",attrs:{"aria-hidden":"true"}})])])]),_c('ul',{staticClass:"site-nav-dropdown-container site-nav-dropdown-container-open site-nav-list"},[_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/cli.html"}},[_v("CLI syntax reference")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/configFiles.html"}},[_v("Config files format")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/authorConfigSyntax.html"}},[_v("Advanced syntax: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/usingAuthorTags.html"}},[_v("Using "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("@@author")]),_v(" tags")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/withNetlify.html"}},[_v("RepoSense with Netlify")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/withGithubActions.html"}},[_v("RepoSense with GitHub Actions")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/withTravis.html"}},[_v("RepoSense with Travis")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/runSh.html"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("run.sh")]),_v(" format")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/faq.html"}},[_v("FAQ")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/troubleshooting.html"}},[_v("Troubleshooting")])])])])])])],1)],1)])]),_v(" "),_m(1),_v(" "),_c('overlay-source',{staticClass:"fixed-header-padding",attrs:{"id":"page-nav","tag-name":"nav","to":"page-nav"}},[_c('div',{staticClass:"nav-component slim-scroll"},[_c('overlay-source',{staticClass:"nav nav-pills flex-column my-0 small no-flex-wrap",attrs:{"id":"mb-page-nav","tag-name":"nav","to":"mb-page-nav"}},[_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#appendix-troubleshooting"}},[_v("Appendix: Troubleshooting‎")]),_v(" "),_c('nav',{staticClass:"nav nav-pills flex-column my-0 nested no-flex-wrap"},[_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#contributions-missing-in-the-ramp-chart-but-appear-in-the-contribution-bar-and-code-panel"}},[_v("Contributions missing in the ramp chart (but appear in the contribution bar and code panel)‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#contribution-bar-and-code-panel-is-empty-despite-a-non-empty-ramp-chart"}},[_v("Contribution bar and code panel is empty (despite a non-empty ramp chart)‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#reposense-is-not-using-the-standalone-config-file-in-my-local-repository"}},[_v("RepoSense is not using the standalone config file in my local repository‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#reposense-fails-on-windows-but-works-on-linux-mac-os"}},[_v("RepoSense fails on Windows (but works on Linux/Mac OS)‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#some-file-types-are-not-shown-in-the-file-type-filter-even-if-i-have-included-them-in-the-file-formats-when-generating-the-report"}},[_v("Some file types are not shown in the file type filter even if I have included them in the file formats when generating the report‎")])])])],1)])],1),_v(" "),_m(2)])} }; var pageVueStaticRenderFns = [function anonymous( ) { @@ -11,6 +11,6 @@ with(this){return _c('div',{staticClass:"text-center bg-warning p-2",attrs:{"tag with(this){return _c('div',{staticClass:"fixed-header-padding",attrs:{"id":"content-wrapper"}},[_c('h1',{staticClass:"display-4",attrs:{"id":"appendix-troubleshooting"}},[_c('span',[_v("Appendix: Troubleshooting")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#appendix-troubleshooting","onclick":"event.stopPropagation()"}})]),_v(" "),_c('h3',{attrs:{"id":"contributions-missing-in-the-ramp-chart-but-appear-in-the-contribution-bar-and-code-panel"}},[_v("Contributions missing in the ramp chart (but appear in the contribution bar and code panel)"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#contributions-missing-in-the-ramp-chart-but-appear-in-the-contribution-bar-and-code-panel","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("This is probably a case of giving an incorrect author name alias (or Git ID) in your "),_c('a',{attrs:{"href":"/RepoSense/ug/configFiles.html#author-config-csv"}},[_v("author-config file")]),_v("."),_c('br'),_v("\nPlease refer to "),_c('a',{attrs:{"href":"/RepoSense/ug/configFiles.html#a-note-about-git-author-name"}},[_v("A Note About Git Author Name")]),_v(" above on how to find out the correct author name you are using and how to change it."),_c('br'),_v("\nAlso, ensure that you have added all author name aliases you may be using (if you are using multiple computers or have previously changed your author name)."),_c('br'),_v("\nAlternatively, you may choose to configure "),_c('em',[_v("RepoSense")]),_v(" to track the email associated with your local Git config or remote Git host email in a "),_c('a',{attrs:{"href":"/RepoSense/ug/configFiles.html#config-json-standalone-config-file"}},[_v("standalone config file")]),_v(" or "),_c('a',{attrs:{"href":"/RepoSense/ug/configFiles.html#author-config-csv"}},[_v("author-config file")]),_v(", which is more accurate compared to author name aliases. For GitHub, the associated email you are using can be found in your "),_c('a',{attrs:{"href":"https://github.com/settings/emails"}},[_v("GitHub settings")]),_v(".")]),_v(" "),_c('h3',{attrs:{"id":"contribution-bar-and-code-panel-is-empty-despite-a-non-empty-ramp-chart"}},[_v("Contribution bar and code panel is empty (despite a non-empty ramp chart)"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#contribution-bar-and-code-panel-is-empty-despite-a-non-empty-ramp-chart","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("The contribution bar and code panel records the lines you have authored to the "),_c('strong',[_v("latest")]),_v(" commit of the repository and branch you are analyzing. As such, it is possible that while you have lots of committed contributions, your final authorship contribution is low. This happens if you have only deleted lines or someone else has overwritten your code and taken authorship for it (currently, RepoSense does not have the functionality to track overwritten lines)."),_c('br'),_v("\nIt is also possible that another user has overridden the authorship of your lines using the "),_c('a',{attrs:{"href":"/RepoSense/ug/usingAuthorTags.html#appendix-using-author-tags"}},[_v("@@author tags")]),_v(".")]),_v(" "),_c('h3',{attrs:{"id":"reposense-is-not-using-the-standalone-config-file-in-my-local-repository"}},[_v("RepoSense is not using the standalone config file in my local repository"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#reposense-is-not-using-the-standalone-config-file-in-my-local-repository","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Ensure that you have committed the changes to your standalone config file first before running the analysis, as "),_c('em',[_v("RepoSense")]),_v(" is unable to detect uncommitted changes to your local repository.")]),_v(" "),_c('h3',{attrs:{"id":"reposense-fails-on-windows-but-works-on-linux-mac-os"}},[_v("RepoSense fails on Windows (but works on Linux/Mac OS)"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#reposense-fails-on-windows-but-works-on-linux-mac-os","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Possibly, you may have some file names with "),_c('a',{attrs:{"href":"https://docs.microsoft.com/en-us/windows/desktop/FileIO/naming-a-file#naming-conventions"}},[_v("special characters")]),_v(" in them, which is disallowed in Windows OS. As such, "),_c('em',[_v("RepoSense")]),_v(" is unable to clone your repository fully, thus failing the analysis.")]),_v(" "),_c('h3',{attrs:{"id":"some-file-types-are-not-shown-in-the-file-type-filter-even-if-i-have-included-them-in-the-file-formats-when-generating-the-report"}},[_v("Some file types are not shown in the file type filter even if I have included them in the file formats when generating the report"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#some-file-types-are-not-shown-in-the-file-type-filter-even-if-i-have-included-them-in-the-file-formats-when-generating-the-report","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("The files of these types may be "),_c('a',{attrs:{"href":"https://en.wikipedia.org/wiki/Binary_file"}},[_v("binary files")]),_v(". "),_c('em',[_v("RepoSense")]),_v(" will group binary files under one single file type "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("binary")]),_v(". Common binary files include images ("),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(".jpg")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(".png")]),_v("), applications ("),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(".exe")]),_v("), zip files ("),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(".zip")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(".rar")]),_v(") and certain document types ("),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(".docx")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(".pptx")]),_v(").")])])} },function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('small',[_v("["),_c('span',[_c('strong',[_v("Powered by")])]),_v(" "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"30"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.2")]),_v(", generated on Tue, 14 May 2024, 13:12:51 UTC]")])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('small',[_v("["),_c('span',[_c('strong',[_v("Powered by")])]),_v(" "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"30"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.2")]),_v(", generated on Thu, 16 May 2024, 22:31:25 UTC]")])])])} }]; \ No newline at end of file diff --git a/ug/usingAuthorTags.html b/ug/usingAuthorTags.html index 62ca1ffa2f..afc6b169f7 100644 --- a/ug/usingAuthorTags.html +++ b/ug/usingAuthorTags.html @@ -15,7 +15,7 @@

    You are looking at the user documentation for the most recent master branch of RepoSense (not released to the public yet). The documentation for the latest public release is here.

    Appendix: Using @@author tags

    @@author tags is a rather invasive but sometimes necessary way to provide more information to RepoSense, by annotating the code being analyzed.

    If you want to override the code authorship deduced by RepoSense (which is based on Git blame/log data), you can use @@author tags to specify certain code segments that should be credited to a certain author irrespective of git history. An example scenario where this is useful is when a method was originally written by one author but a second author did some minor refactoring to it; in this case, RepoSense might attribute the code to the second author while you may want to attribute the code to the first author.

    There are 2 types of @@author tags:

    • Start Tags (format: @@author AUTHOR_GIT_AUTHOR_NAME): A start tag indicates the start of a code segment written by the author identified by the AUTHOR_GIT_AUTHOR_NAME.
    • End Tags (format: @@author): Optional. An end tag indicates the end of a code segment written by the author identified by the AUTHOR_GIT_AUTHOR_NAME of the start tag.

    If an end tag is not provided, the code till the next start tag (or the end of the file) will be attributed to the author specified in the start tag above. Use only when necessary to minimize polluting your code with these extra tags.

    If an end tag is provided without a corresponding start tag, the code until the next start tag, the next end tag, or the end of the file, will not be attributed to any author. This should only be used if the code should not be attributed to any author.

    The @@author tags should be enclosed within a single-line comment, using the comment syntax of the file in concern. Below are some examples:

    author tags

    Currently, the following comment formats are supported:

    • // @@author authorName
    • /* @@author authorName */
    • /* @@author authorName
    • # @@author authorName
    • % @@author authorName
    • <!-- @@author authorName -->
    • <!--- @@author authorName --->
    • [//]: # (@@author authorName)

    RepoSense checks whether the line matches the supported comment formats. If the line does not match the formats, -RepoSense treats it as a normal line.

    The code until the next start tag, the end tag, or the end of file will be attributed to that author.

    Note: Remember to commit the files after the changes. (reason: RepoSense can see committed code only)

    Special thanks to Collate project for providing the inspiration for this functionality.

    [Powered by MarkBind 5.5.2, generated on Tue, 14 May 2024, 13:12:51 UTC]
    +RepoSense treats it as a normal line.

    The code until the next start tag, the end tag, or the end of file will be attributed to that author.

    Note: Remember to commit the files after the changes. (reason: RepoSense can see committed code only)

    Special thanks to Collate project for providing the inspiration for this functionality.

    [Powered by MarkBind 5.5.2, generated on Thu, 16 May 2024, 22:31:25 UTC]
    diff --git a/ug/usingAuthorTags.page-vue-render.js b/ug/usingAuthorTags.page-vue-render.js index 0cbd1d9b71..2241019276 100644 --- a/ug/usingAuthorTags.page-vue-render.js +++ b/ug/usingAuthorTags.page-vue-render.js @@ -1,7 +1,7 @@ var pageVueRenderFn = function anonymous( ) { -with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"fixed":""}},[_c('navbar',{attrs:{"type":"dark"},scopedSlots:_u([{key:"brand",fn:function(){return [_c('a',{staticClass:"navbar-brand",attrs:{"href":"/index.html","title":"Home"}},[_c('img',{attrs:{"width":"30px","src":"/favicon.ico"}})])]},proxy:true},{key:"right",fn:function(){return [_c('li',[_c('form',{staticClass:"navbar-form"},[_c('searchbar',{attrs:{"data":searchData,"placeholder":"Search","on-hit":searchCallback,"menu-align-right":""}})],1)])]},proxy:true}])},[_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/index.html"}},[_v("HOME")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/showcase.html"}},[_v("SHOWCASE")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/ug/index.html"}},[_v("USER GUIDE")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/dg/index.html"}},[_v("DEVELOPER GUIDE")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/about.html"}},[_v("ABOUT")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/contact.html"}},[_v("CONTACT")])]),_v(" "),_c('li',{attrs:{"tags":"dev"}},[_c('a',{staticClass:"nav-link",attrs:{"href":"https://reposense.org","target":"_blank"}},[_c('span',[_c('span',{staticClass:"fas fa-external-link-alt",attrs:{"aria-hidden":"true"}}),_v(" PRODUCTION SITE")])])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"https://github.com/RepoSense/reposense","target":"_blank"}},[_c('span',[_c('span',{staticClass:"fab fa-github",attrs:{"aria-hidden":"true"}})])])])]),_v(" "),_m(0)],1),_v(" "),_c('div',{attrs:{"id":"flex-body"}},[_c('overlay-source',{staticClass:"fixed-header-padding",attrs:{"id":"site-nav","tag-name":"nav","to":"site-nav"}},[_c('div',{staticClass:"site-nav-top"},[_c('div',{staticClass:"font-weight-bold mb-2",staticStyle:{"font-size":"1.25rem"}},[_c('span',[_c('strong',[_c('strong',[_v("USER GUIDE")])])])])]),_v(" "),_c('div',{staticClass:"nav-component slim-scroll"},[_c('div',[_c('site-nav',[_c('overlay-source',{staticClass:"site-nav-list site-nav-list-root",attrs:{"tag-name":"ul","to":"mb-site-nav"}},[_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/index.html"}},[_c('strong',[_v("Overview")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/generatingReports.html"}},[_c('strong',[_v("Generating reports")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/usingReports.html"}},[_c('strong',[_v("Using reports")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/customizingReports.html"}},[_c('strong',[_v("Customizing reports")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/sharingReports.html"}},[_c('strong',[_v("Sharing reports")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('strong',[_v("Appendices")]),_v(" "),_c('div',{staticClass:"site-nav-dropdown-btn-container"},[_c('i',{staticClass:"site-nav-dropdown-btn-icon site-nav-rotate-icon",attrs:{"onclick":"handleSiteNavClick(this.parentNode.parentNode, false); event.stopPropagation();"}},[_c('span',{staticClass:"glyphicon glyphicon-menu-down",attrs:{"aria-hidden":"true"}})])])]),_c('ul',{staticClass:"site-nav-dropdown-container site-nav-dropdown-container-open site-nav-list"},[_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/cli.html"}},[_v("CLI syntax reference")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/configFiles.html"}},[_v("Config files format")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/authorConfigSyntax.html"}},[_v("Advanced syntax: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/usingAuthorTags.html"}},[_v("Using "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("@@author")]),_v(" tags")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/withNetlify.html"}},[_v("RepoSense with Netlify")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/withGithubActions.html"}},[_v("RepoSense with GitHub Actions")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/withTravis.html"}},[_v("RepoSense with Travis")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/runSh.html"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("run.sh")]),_v(" format")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/faq.html"}},[_v("FAQ")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/troubleshooting.html"}},[_v("Troubleshooting")])])])])])])],1)],1)])]),_v(" "),_c('div',{staticClass:"fixed-header-padding",attrs:{"id":"content-wrapper"}},[_m(1),_v(" "),_m(2),_v(" "),_m(3),_v(" "),_m(4),_v(" "),_m(5),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("If an end tag is not provided, the code till the next start tag (or the end of the file) will be attributed to the author specified in the start tag above. Use only when necessary to minimize polluting your code with these extra tags.")])]),_v(" "),_c('box',{attrs:{"type":"warning","seamless":""}},[_c('p',[_v("If an end tag is provided without a corresponding start tag, the code until the next start tag, the next end tag, or the end of the file, will not be attributed to any author. This should only be used if the code should not be attributed to any author.")])]),_v(" "),_m(6),_v(" "),_m(7),_v(" "),_c('p',[_v("Currently, the following comment formats are supported:")]),_v(" "),_m(8),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("RepoSense checks whether the line matches the supported comment formats. If the line does not match the formats,\nRepoSense treats it as a normal line.")]),_v(" "),_c('p',[_v("The code until the next start tag, the end tag, or the end of file will be attributed to that author.")])]),_v(" "),_m(9),_v(" "),_m(10)],1)],1),_v(" "),_m(11)])} +with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"fixed":""}},[_c('navbar',{attrs:{"type":"dark"},scopedSlots:_u([{key:"brand",fn:function(){return [_c('a',{staticClass:"navbar-brand",attrs:{"href":"/index.html","title":"Home"}},[_c('img',{attrs:{"width":"30px","src":"/favicon.ico"}})])]},proxy:true},{key:"right",fn:function(){return [_c('li',[_c('form',{staticClass:"navbar-form"},[_c('searchbar',{attrs:{"data":searchData,"placeholder":"Search","on-hit":searchCallback,"menu-align-right":""}})],1)])]},proxy:true}])},[_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/index.html"}},[_v("HOME")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/showcase.html"}},[_v("SHOWCASE")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/ug/index.html"}},[_v("USER GUIDE")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/dg/index.html"}},[_v("DEVELOPER GUIDE")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/about.html"}},[_v("ABOUT")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/contact.html"}},[_v("CONTACT")])]),_v(" "),_c('li',{attrs:{"tags":"dev"}},[_c('a',{staticClass:"nav-link",attrs:{"href":"https://reposense.org","target":"_blank"}},[_c('span',[_c('span',{staticClass:"fas fa-external-link-alt",attrs:{"aria-hidden":"true"}}),_v(" PRODUCTION SITE")])])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"https://github.com/RepoSense/reposense","target":"_blank"}},[_c('span',[_c('span',{staticClass:"fab fa-github",attrs:{"aria-hidden":"true"}})])])])]),_v(" "),_m(0)],1),_v(" "),_c('div',{attrs:{"id":"flex-body"}},[_c('overlay-source',{staticClass:"fixed-header-padding",attrs:{"id":"site-nav","tag-name":"nav","to":"site-nav"}},[_c('div',{staticClass:"site-nav-top"},[_c('div',{staticClass:"font-weight-bold mb-2",staticStyle:{"font-size":"1.25rem"}},[_c('span',[_c('strong',[_c('strong',[_v("USER GUIDE")])])])])]),_v(" "),_c('div',{staticClass:"nav-component slim-scroll"},[_c('div',[_c('site-nav',[_c('overlay-source',{staticClass:"site-nav-list site-nav-list-root",attrs:{"tag-name":"ul","to":"mb-site-nav"}},[_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/index.html"}},[_c('strong',[_v("Overview")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/generatingReports.html"}},[_c('strong',[_v("Generating reports")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/usingReports.html"}},[_c('strong',[_v("Using reports")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/customizingReports.html"}},[_c('strong',[_v("Customizing reports")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/sharingReports.html"}},[_c('strong',[_v("Sharing reports")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('strong',[_v("Appendices")]),_v(" "),_c('div',{staticClass:"site-nav-dropdown-btn-container"},[_c('i',{staticClass:"site-nav-dropdown-btn-icon site-nav-rotate-icon",attrs:{"onclick":"handleSiteNavClick(this.parentNode.parentNode, false); event.stopPropagation();"}},[_c('span',{staticClass:"glyphicon glyphicon-menu-down",attrs:{"aria-hidden":"true"}})])])]),_c('ul',{staticClass:"site-nav-dropdown-container site-nav-dropdown-container-open site-nav-list"},[_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/cli.html"}},[_v("CLI syntax reference")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/configFiles.html"}},[_v("Config files format")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/authorConfigSyntax.html"}},[_v("Advanced syntax: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/usingAuthorTags.html"}},[_v("Using "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("@@author")]),_v(" tags")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/withNetlify.html"}},[_v("RepoSense with Netlify")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/withGithubActions.html"}},[_v("RepoSense with GitHub Actions")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/withTravis.html"}},[_v("RepoSense with Travis")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/runSh.html"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("run.sh")]),_v(" format")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/faq.html"}},[_v("FAQ")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/troubleshooting.html"}},[_v("Troubleshooting")])])])])])])],1)],1)])]),_v(" "),_c('div',{staticClass:"fixed-header-padding",attrs:{"id":"content-wrapper"}},[_m(1),_v(" "),_m(2),_v(" "),_m(3),_v(" "),_m(4),_v(" "),_m(5),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("If an end tag is not provided, the code till the next start tag (or the end of the file) will be attributed to the author specified in the start tag above. Use only when necessary to minimize polluting your code with these extra tags.")])]),_v(" "),_c('box',{attrs:{"type":"warning","seamless":""}},[_c('p',[_v("If an end tag is provided without a corresponding start tag, the code until the next start tag, the next end tag, or the end of the file, will not be attributed to any author. This should only be used if the code should not be attributed to any author.")])]),_v(" "),_m(6),_v(" "),_m(7),_v(" "),_c('p',[_v("Currently, the following comment formats are supported:")]),_v(" "),_m(8),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("RepoSense checks whether the line matches the supported comment formats. If the line does not match the formats,\nRepoSense treats it as a normal line.")]),_v(" "),_c('p',[_v("The code until the next start tag, the end tag, or the end of file will be attributed to that author.")])]),_v(" "),_m(9),_v(" "),_m(10)],1),_v(" "),_c('overlay-source',{staticClass:"fixed-header-padding",attrs:{"id":"page-nav","tag-name":"nav","to":"page-nav"}},[_c('div',{staticClass:"nav-component slim-scroll"})])],1),_v(" "),_m(11)])} }; var pageVueStaticRenderFns = [function anonymous( ) { @@ -38,6 +38,6 @@ with(this){return _c('p',[_v("Note: Remember to "),_c('strong',[_v("commit")]),_ with(this){return _c('p',[_v("Special thanks to "),_c('a',{attrs:{"href":"https://github.com/se-edu/collate"}},[_v("Collate project")]),_v(" for providing the inspiration for this functionality.")])} },function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('small',[_v("["),_c('span',[_c('strong',[_v("Powered by")])]),_v(" "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"30"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.2")]),_v(", generated on Tue, 14 May 2024, 13:12:51 UTC]")])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('small',[_v("["),_c('span',[_c('strong',[_v("Powered by")])]),_v(" "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"30"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.2")]),_v(", generated on Thu, 16 May 2024, 22:31:25 UTC]")])])])} }]; \ No newline at end of file diff --git a/ug/usingReports.html b/ug/usingReports.html index 06ee28034d..09b92152ba 100644 --- a/ug/usingReports.html +++ b/ug/usingReports.html @@ -11,7 +11,7 @@ - +

    You are looking at the user documentation for the most recent master branch of RepoSense (not released to the public yet). The documentation for the latest public release is here.

    Using reports

    Let's look at how to view, interpret, and interact with a RepoSense report.

    Viewing the report

    As a report consists of web pages, it can be viewed using a Web Browser. Here are the ways to view the report in different situations.

    • Situation 1: The report has been hosted on a website
      • Simply go to the URL of the report (example) in your browser.
    • Situation 2: You generated the report in your computer earlier
      • Run RepoSense with the --view option:
        @@ -32,7 +32,7 @@
        • Type file path glob in glob filter to include files matching the glob expression.
        • Select the checkboxes to include files of preferred file extensions. The number right beside the file extension shows the total number of lines written by the author in such file extension files. In contrast, the number inside the parenthesis indicates the number of non-blank lines written by the author.
      • Clicking the file title toggles the file content.
      • Clicking the first icon beside the file title opens the history view of the file on the remote repository.
      • Clicking the second icon beside the file title opens the blame view of the file on the remote repository.
      • When using the code panel for a specific author, code attributed to the author is highlighted in green.
        • When using the merge group option with group by repos, the code panel will consist of multiple authors' contributions. Code attributed to these authors can be differentiated by the highlight colors of the code. The color legend is shown at the top of each file and consists only those authors that edited a particular file.
      • Non-trivial code segments that the selected author has not written are hidden by default, but you can toggle them by clicking on the icon.

      Changing binary files, such as images (.jpg, .png), applications (.exe), zip files (.zip, .rar) and certain document types (.docx, .pptx), is not counted towards the total number of lines of code contributed by an author.

      Commits panel

      commits panel

      The Commits panel allows users to see the commits attributed to a specific author.

      • To view all commits attributed to an author, locate the author's ramp chart in the chart panel, and click on the icon above the ramp chart.
      • To view commits of a specific period, locate the author's ramp chart in the chart panel, hold down the Ctrl key ( in MacOS), and click on the start and end positions of the period (on the ramp chart) you want to view.

      Opening commits panel

      • The commits can be sorted by the date it was committed or by LoC.
      • The tags of the commits will also be displayed on top if any. Clicking on a tag will direct you to the commit having that particular tag.
      • The date range for the Chart panel can be updated by clicking on the "Show ramp chart for this period" below the name of the author.
      • The ramp chart at the top of the Commits panel represents individual commits (not weekly or daily contributions).
      • The commit messages body can be expanded or collapsed by clicking on the icon beside each commit message title.
      • To promote and encourage the 50/72 rule for commit messages, a dotted vertical line will be shown for: -
        • Commit message subject that exceeds 50 characters.
        • Commit message body after the 72nd character mark.
    [Powered by MarkBind 5.5.2, generated on Tue, 14 May 2024, 13:12:51 UTC]
    +
    • Commit message subject that exceeds 50 characters.
    • Commit message body after the 72nd character mark.
    [Powered by MarkBind 5.5.2, generated on Thu, 16 May 2024, 22:31:25 UTC]
    diff --git a/ug/usingReports.page-vue-render.js b/ug/usingReports.page-vue-render.js index 32a02c8ac2..6f42182cad 100644 --- a/ug/usingReports.page-vue-render.js +++ b/ug/usingReports.page-vue-render.js @@ -1,7 +1,7 @@ var pageVueRenderFn = function anonymous( ) { -with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"fixed":""}},[_c('navbar',{attrs:{"type":"dark"},scopedSlots:_u([{key:"brand",fn:function(){return [_c('a',{staticClass:"navbar-brand",attrs:{"href":"/index.html","title":"Home"}},[_c('img',{attrs:{"width":"30px","src":"/favicon.ico"}})])]},proxy:true},{key:"right",fn:function(){return [_c('li',[_c('form',{staticClass:"navbar-form"},[_c('searchbar',{attrs:{"data":searchData,"placeholder":"Search","on-hit":searchCallback,"menu-align-right":""}})],1)])]},proxy:true}])},[_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/index.html"}},[_v("HOME")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/showcase.html"}},[_v("SHOWCASE")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/ug/index.html"}},[_v("USER GUIDE")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/dg/index.html"}},[_v("DEVELOPER GUIDE")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/about.html"}},[_v("ABOUT")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/contact.html"}},[_v("CONTACT")])]),_v(" "),_c('li',{attrs:{"tags":"dev"}},[_c('a',{staticClass:"nav-link",attrs:{"href":"https://reposense.org","target":"_blank"}},[_c('span',[_c('span',{staticClass:"fas fa-external-link-alt",attrs:{"aria-hidden":"true"}}),_v(" PRODUCTION SITE")])])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"https://github.com/RepoSense/reposense","target":"_blank"}},[_c('span',[_c('span',{staticClass:"fab fa-github",attrs:{"aria-hidden":"true"}})])])])]),_v(" "),_m(0)],1),_v(" "),_c('div',{attrs:{"id":"flex-body"}},[_c('overlay-source',{staticClass:"fixed-header-padding",attrs:{"id":"site-nav","tag-name":"nav","to":"site-nav"}},[_c('div',{staticClass:"site-nav-top"},[_c('div',{staticClass:"font-weight-bold mb-2",staticStyle:{"font-size":"1.25rem"}},[_c('span',[_c('strong',[_c('strong',[_v("USER GUIDE")])])])])]),_v(" "),_c('div',{staticClass:"nav-component slim-scroll"},[_c('div',[_c('site-nav',[_c('overlay-source',{staticClass:"site-nav-list site-nav-list-root",attrs:{"tag-name":"ul","to":"mb-site-nav"}},[_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/index.html"}},[_c('strong',[_v("Overview")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/generatingReports.html"}},[_c('strong',[_v("Generating reports")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/usingReports.html"}},[_c('strong',[_v("Using reports")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/customizingReports.html"}},[_c('strong',[_v("Customizing reports")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/sharingReports.html"}},[_c('strong',[_v("Sharing reports")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('strong',[_v("Appendices")]),_v(" "),_c('div',{staticClass:"site-nav-dropdown-btn-container"},[_c('i',{staticClass:"site-nav-dropdown-btn-icon site-nav-rotate-icon",attrs:{"onclick":"handleSiteNavClick(this.parentNode.parentNode, false); event.stopPropagation();"}},[_c('span',{staticClass:"glyphicon glyphicon-menu-down",attrs:{"aria-hidden":"true"}})])])]),_c('ul',{staticClass:"site-nav-dropdown-container site-nav-dropdown-container-open site-nav-list"},[_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/cli.html"}},[_v("CLI syntax reference")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/configFiles.html"}},[_v("Config files format")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/authorConfigSyntax.html"}},[_v("Advanced syntax: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/usingAuthorTags.html"}},[_v("Using "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("@@author")]),_v(" tags")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/withNetlify.html"}},[_v("RepoSense with Netlify")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/withGithubActions.html"}},[_v("RepoSense with GitHub Actions")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/withTravis.html"}},[_v("RepoSense with Travis")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/runSh.html"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("run.sh")]),_v(" format")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/faq.html"}},[_v("FAQ")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/troubleshooting.html"}},[_v("Troubleshooting")])])])])])])],1)],1)])]),_v(" "),_c('div',{staticClass:"fixed-header-padding",attrs:{"id":"content-wrapper"}},[_m(1),_v(" "),_m(2),_v(" "),_m(3),_v(" "),_c('p',[_v("As a report consists of web pages, it can be viewed using a Web Browser. Here are the ways to view the report in different situations.")]),_v(" "),_m(4),_v(" "),_m(5),_v(" "),_c('p',[_v("Here is an example of how a typical report looks like:")]),_v(" "),_m(6),_v(" "),_m(7),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Links to external webpages (repository link, author's profile, blame view, etc.) is only properly supported when RepoSense analyzes a remote repository belonging to GitHub, GitLab or BitBucket.")])]),_v(" "),_m(8),_v(" "),_m(9),_v(" "),_m(10),_v(" "),_m(11),_v(" "),_c('box',{attrs:{"type":"definition","seamless":""}},[_c('p',[_c('strong',[_v("Ramp chart")]),_v(": This is a visualization of the frequency and quantity of contributions of an author for a specific repository. Each ramp chart (i.e., light blue rectangle) represents an author's contribution timeline for a particular repository. Contributions appear as ramps in the timeline.")])]),_v(" "),_c('box',{attrs:{"type":"definition","seamless":""}},[_c('p',[_c('strong',[_v("Ramp")]),_v(": The name we use to refer to the triangular saw-tooth-like shape that represents a code contribution. A ramp can represent a single commit, a sum of the commits done in a certain period, depending on the granularity used.")])]),_v(" "),_m(12),_v(" "),_m(13),_v(" "),_c('box',{attrs:{"type":"definition","seamless":""}},[_c('p',[_c('strong',[_v("Contribution bar")]),_v(": It's the bar that appears below each ramp chart. Its length represents the total amount of code contributed by an author during the "),_c('em',[_v("total analysis period")]),_v(".")])]),_v(" "),_m(14),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("We allow contribution bars to overflow into multiple lines (rather than adjust the scale to fit the maximum bar length) to prevent a minority of "),_c('tooltip',{scopedSlots:_u([{key:"content",fn:function(){return [_v("i.e., those contributing an unusually high amount of code")]},proxy:true}])},[_v("outliers")]),_v(" from affecting the scale of the majority.")],1)]),_v(" "),_m(15),_v(" "),_m(16),_v(" "),_m(17),_v(" "),_m(18),_v(" "),_c('box',{attrs:{"type":"tip","seamless":""}},[_c('p',[_c('strong',[_v("RepoSense support "),_c('em',[_v("intelligent")]),_v(" bookmarks")]),_v(": Note how the browser URL changes as you modify settings in the report. If you send that URL to someone else, that person will be able to use that URL to view the report in the same "),_c('em',[_v("view configuration")]),_v(" you had when you copied the URL. For example, "),_c('a',{attrs:{"href":"https://nus-cs2113-ay1920s2.github.io/tp-dashboard/"}},[_v("this URL")]),_v(" and "),_c('a',{attrs:{"href":"https://nus-cs2113-ay1920s2.github.io/tp-dashboard/#search=&sort=groupTitle&sortWithin=title&since=2020-03-01&timeframe=day&mergegroup=true&groupSelect=groupByRepos&breakdown=true"}},[_v("this URL")]),_v(" give two different views of the same report.")])]),_v(" "),_m(19),_v(" "),_c('img',{attrs:{"src":"/RepoSense/images/code-panel.png","alt":"code panel","width":"468"}}),_v(" "),_m(20),_v(" "),_m(21),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Changing binary files, such as images ("),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(".jpg")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(".png")]),_v("), applications ("),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(".exe")]),_v("), zip files ("),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(".zip")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(".rar")]),_v(") and certain document types ("),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(".docx")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(".pptx")]),_v("), is not counted towards the total number of lines of code contributed by an author.")])]),_v(" "),_m(22),_v(" "),_c('img',{attrs:{"src":"/RepoSense/images/commits-panel.png","alt":"commits panel","width":"468"}}),_v(" "),_m(23),_v(" "),_m(24),_v(" "),_m(25),_v(" "),_m(26)],1)],1),_v(" "),_m(27)])} +with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"fixed":""}},[_c('navbar',{attrs:{"type":"dark"},scopedSlots:_u([{key:"brand",fn:function(){return [_c('a',{staticClass:"navbar-brand",attrs:{"href":"/index.html","title":"Home"}},[_c('img',{attrs:{"width":"30px","src":"/favicon.ico"}})])]},proxy:true},{key:"right",fn:function(){return [_c('li',[_c('form',{staticClass:"navbar-form"},[_c('searchbar',{attrs:{"data":searchData,"placeholder":"Search","on-hit":searchCallback,"menu-align-right":""}})],1)])]},proxy:true}])},[_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/index.html"}},[_v("HOME")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/showcase.html"}},[_v("SHOWCASE")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/ug/index.html"}},[_v("USER GUIDE")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/dg/index.html"}},[_v("DEVELOPER GUIDE")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/about.html"}},[_v("ABOUT")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/contact.html"}},[_v("CONTACT")])]),_v(" "),_c('li',{attrs:{"tags":"dev"}},[_c('a',{staticClass:"nav-link",attrs:{"href":"https://reposense.org","target":"_blank"}},[_c('span',[_c('span',{staticClass:"fas fa-external-link-alt",attrs:{"aria-hidden":"true"}}),_v(" PRODUCTION SITE")])])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"https://github.com/RepoSense/reposense","target":"_blank"}},[_c('span',[_c('span',{staticClass:"fab fa-github",attrs:{"aria-hidden":"true"}})])])])]),_v(" "),_m(0)],1),_v(" "),_c('div',{attrs:{"id":"flex-body"}},[_c('overlay-source',{staticClass:"fixed-header-padding",attrs:{"id":"site-nav","tag-name":"nav","to":"site-nav"}},[_c('div',{staticClass:"site-nav-top"},[_c('div',{staticClass:"font-weight-bold mb-2",staticStyle:{"font-size":"1.25rem"}},[_c('span',[_c('strong',[_c('strong',[_v("USER GUIDE")])])])])]),_v(" "),_c('div',{staticClass:"nav-component slim-scroll"},[_c('div',[_c('site-nav',[_c('overlay-source',{staticClass:"site-nav-list site-nav-list-root",attrs:{"tag-name":"ul","to":"mb-site-nav"}},[_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/index.html"}},[_c('strong',[_v("Overview")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/generatingReports.html"}},[_c('strong',[_v("Generating reports")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/usingReports.html"}},[_c('strong',[_v("Using reports")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/customizingReports.html"}},[_c('strong',[_v("Customizing reports")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/sharingReports.html"}},[_c('strong',[_v("Sharing reports")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('strong',[_v("Appendices")]),_v(" "),_c('div',{staticClass:"site-nav-dropdown-btn-container"},[_c('i',{staticClass:"site-nav-dropdown-btn-icon site-nav-rotate-icon",attrs:{"onclick":"handleSiteNavClick(this.parentNode.parentNode, false); event.stopPropagation();"}},[_c('span',{staticClass:"glyphicon glyphicon-menu-down",attrs:{"aria-hidden":"true"}})])])]),_c('ul',{staticClass:"site-nav-dropdown-container site-nav-dropdown-container-open site-nav-list"},[_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/cli.html"}},[_v("CLI syntax reference")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/configFiles.html"}},[_v("Config files format")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/authorConfigSyntax.html"}},[_v("Advanced syntax: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/usingAuthorTags.html"}},[_v("Using "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("@@author")]),_v(" tags")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/withNetlify.html"}},[_v("RepoSense with Netlify")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/withGithubActions.html"}},[_v("RepoSense with GitHub Actions")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/withTravis.html"}},[_v("RepoSense with Travis")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/runSh.html"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("run.sh")]),_v(" format")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/faq.html"}},[_v("FAQ")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/troubleshooting.html"}},[_v("Troubleshooting")])])])])])])],1)],1)])]),_v(" "),_c('div',{staticClass:"fixed-header-padding",attrs:{"id":"content-wrapper"}},[_m(1),_v(" "),_m(2),_v(" "),_m(3),_v(" "),_c('p',[_v("As a report consists of web pages, it can be viewed using a Web Browser. Here are the ways to view the report in different situations.")]),_v(" "),_m(4),_v(" "),_m(5),_v(" "),_c('p',[_v("Here is an example of how a typical report looks like:")]),_v(" "),_m(6),_v(" "),_m(7),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Links to external webpages (repository link, author's profile, blame view, etc.) is only properly supported when RepoSense analyzes a remote repository belonging to GitHub, GitLab or BitBucket.")])]),_v(" "),_m(8),_v(" "),_m(9),_v(" "),_m(10),_v(" "),_m(11),_v(" "),_c('box',{attrs:{"type":"definition","seamless":""}},[_c('p',[_c('strong',[_v("Ramp chart")]),_v(": This is a visualization of the frequency and quantity of contributions of an author for a specific repository. Each ramp chart (i.e., light blue rectangle) represents an author's contribution timeline for a particular repository. Contributions appear as ramps in the timeline.")])]),_v(" "),_c('box',{attrs:{"type":"definition","seamless":""}},[_c('p',[_c('strong',[_v("Ramp")]),_v(": The name we use to refer to the triangular saw-tooth-like shape that represents a code contribution. A ramp can represent a single commit, a sum of the commits done in a certain period, depending on the granularity used.")])]),_v(" "),_m(12),_v(" "),_m(13),_v(" "),_c('box',{attrs:{"type":"definition","seamless":""}},[_c('p',[_c('strong',[_v("Contribution bar")]),_v(": It's the bar that appears below each ramp chart. Its length represents the total amount of code contributed by an author during the "),_c('em',[_v("total analysis period")]),_v(".")])]),_v(" "),_m(14),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("We allow contribution bars to overflow into multiple lines (rather than adjust the scale to fit the maximum bar length) to prevent a minority of "),_c('tooltip',{scopedSlots:_u([{key:"content",fn:function(){return [_v("i.e., those contributing an unusually high amount of code")]},proxy:true}])},[_v("outliers")]),_v(" from affecting the scale of the majority.")],1)]),_v(" "),_m(15),_v(" "),_m(16),_v(" "),_m(17),_v(" "),_m(18),_v(" "),_c('box',{attrs:{"type":"tip","seamless":""}},[_c('p',[_c('strong',[_v("RepoSense support "),_c('em',[_v("intelligent")]),_v(" bookmarks")]),_v(": Note how the browser URL changes as you modify settings in the report. If you send that URL to someone else, that person will be able to use that URL to view the report in the same "),_c('em',[_v("view configuration")]),_v(" you had when you copied the URL. For example, "),_c('a',{attrs:{"href":"https://nus-cs2113-ay1920s2.github.io/tp-dashboard/"}},[_v("this URL")]),_v(" and "),_c('a',{attrs:{"href":"https://nus-cs2113-ay1920s2.github.io/tp-dashboard/#search=&sort=groupTitle&sortWithin=title&since=2020-03-01&timeframe=day&mergegroup=true&groupSelect=groupByRepos&breakdown=true"}},[_v("this URL")]),_v(" give two different views of the same report.")])]),_v(" "),_m(19),_v(" "),_c('img',{attrs:{"src":"/RepoSense/images/code-panel.png","alt":"code panel","width":"468"}}),_v(" "),_m(20),_v(" "),_m(21),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Changing binary files, such as images ("),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(".jpg")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(".png")]),_v("), applications ("),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(".exe")]),_v("), zip files ("),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(".zip")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(".rar")]),_v(") and certain document types ("),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(".docx")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(".pptx")]),_v("), is not counted towards the total number of lines of code contributed by an author.")])]),_v(" "),_m(22),_v(" "),_c('img',{attrs:{"src":"/RepoSense/images/commits-panel.png","alt":"commits panel","width":"468"}}),_v(" "),_m(23),_v(" "),_m(24),_v(" "),_m(25),_v(" "),_m(26)],1),_v(" "),_c('overlay-source',{staticClass:"fixed-header-padding",attrs:{"id":"page-nav","tag-name":"nav","to":"page-nav"}},[_c('div',{staticClass:"nav-component slim-scroll"},[_c('overlay-source',{staticClass:"nav nav-pills flex-column my-0 small no-flex-wrap",attrs:{"id":"mb-page-nav","tag-name":"nav","to":"mb-page-nav"}},[_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#using-reports"}},[_v("Using reports‎")]),_v(" "),_c('nav',{staticClass:"nav nav-pills flex-column my-0 nested no-flex-wrap"},[_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#viewing-the-report"}},[_v("Viewing the report‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#report-structure"}},[_v("Report structure‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#chart-panel"}},[_v("Chart panel‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#code-panel"}},[_v("Code panel‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#commits-panel"}},[_v("Commits panel‎")])])])],1)])],1),_v(" "),_m(27)])} }; var pageVueStaticRenderFns = [function anonymous( ) { @@ -86,6 +86,6 @@ with(this){return _c('p',[_c('a',{attrs:{"href":"/RepoSense/images/opening-commi with(this){return _c('ul',[_c('li',[_v("The commits can be sorted by the date it was committed or by LoC.")]),_v(" "),_c('li',[_v("The tags of the commits will also be displayed on top if any. Clicking on a tag will direct you to the commit having that particular tag.")]),_v(" "),_c('li',[_v("The date range for the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Chart panel")]),_v(" can be updated by clicking on the \"Show ramp chart for this period\" below the name of the author.")]),_v(" "),_c('li',[_v("The ramp chart at the top of the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Commits panel")]),_v(" represents individual commits (not weekly or daily contributions).")]),_v(" "),_c('li',[_v("The commit messages body can be expanded or collapsed by clicking on the "),_c('span',{staticClass:"dimmed"},[_c('span',{staticClass:"fas fa-ellipsis-h",attrs:{"aria-hidden":"true"}})]),_v(" icon beside each commit message title.")]),_v(" "),_c('li',[_v("To promote and encourage the 50/72 rule for commit messages, a dotted vertical line will be shown for:\n"),_c('ul',[_c('li',[_v("Commit message subject that exceeds 50 characters.")]),_v(" "),_c('li',[_v("Commit message body after the 72nd character mark.")])])])])} },function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('small',[_v("["),_c('span',[_c('strong',[_v("Powered by")])]),_v(" "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"30"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.2")]),_v(", generated on Tue, 14 May 2024, 13:12:51 UTC]")])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('small',[_v("["),_c('span',[_c('strong',[_v("Powered by")])]),_v(" "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"30"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.2")]),_v(", generated on Thu, 16 May 2024, 22:31:25 UTC]")])])])} }]; \ No newline at end of file diff --git a/ug/withGithubActions.html b/ug/withGithubActions.html index cad78aef19..a2bd733f25 100644 --- a/ug/withGithubActions.html +++ b/ug/withGithubActions.html @@ -11,11 +11,11 @@ - +

    You are looking at the user documentation for the most recent master branch of RepoSense (not released to the public yet). The documentation for the latest public release is here.

    Appendix: RepoSense with GitHub Actions

    You can use GitHub Actions (together with other GitHub tools) to automate the generating and publishing of RepoSense reports.

    Setting up

    The instructions below assume you are using GitHub pages to host your report.

    Step 1 Fork the publish-RepoSense repository using this link. Optionally, you can rename the fork to match your RepoSense report e.g., project-code-dashboard.

    Step 2 Activate GitHub Actions on the forked repository:

    1. Go to the Actions page of your fork of the publish-RepoSense repo.
    2. Click on the green button that says I understand my workflows, go ahead and enable them to enable GitHub Actions on your new repository.

    Step 3 Update report configuration:

    In your fork, edit run.sh (and if applicable, repo-config.csv, author-config.csv, group-config.csv) to customize the command line parameters or repositories to be analyzed.

    Step 4 View the generated report:

    To access your regenerated RepoSense report, go to the settings of your fork in GitHub, under GitHub Pages section, look for Your site is published at [LINK]. It should look something like https://[YOUR_GITHUB_ID].github.io/publish-RepoSense. -GitHub Setting

    There is also a published GitHub Action (reposense-action) that can be used to generate and publish RepoSense reports. It is especially convenient for users who wish to skip the forking and setting up of a separate repository. For more information, refer to the usage description.

    Updating the report

    Manual:

    • You can trigger GitHub to re-generate and re-deploy the report by pushing an empty commit to your fork.
    • Currently, the GitHub Actions UI does not support the manual execution of workflows.

    Automated: GitHub actions can be set to run periodically.

    1. Edit the .github/workflows/main.yml and uncomment the schedule: section.
    2. You may change the expression after cron: to a schedule of your choice. Read more about cron syntax here.
    3. Commit your changes.
    [Powered by MarkBind 5.5.2, generated on Tue, 14 May 2024, 13:12:51 UTC]
    +GitHub Setting

    There is also a published GitHub Action (reposense-action) that can be used to generate and publish RepoSense reports. It is especially convenient for users who wish to skip the forking and setting up of a separate repository. For more information, refer to the usage description.

    Updating the report

    Manual:

    • You can trigger GitHub to re-generate and re-deploy the report by pushing an empty commit to your fork.
    • Currently, the GitHub Actions UI does not support the manual execution of workflows.

    Automated: GitHub actions can be set to run periodically.

    1. Edit the .github/workflows/main.yml and uncomment the schedule: section.
    2. You may change the expression after cron: to a schedule of your choice. Read more about cron syntax here.
    3. Commit your changes.
    [Powered by MarkBind 5.5.2, generated on Thu, 16 May 2024, 22:31:25 UTC]
    diff --git a/ug/withGithubActions.page-vue-render.js b/ug/withGithubActions.page-vue-render.js index 63d960e1dc..c631ff052d 100644 --- a/ug/withGithubActions.page-vue-render.js +++ b/ug/withGithubActions.page-vue-render.js @@ -1,7 +1,7 @@ var pageVueRenderFn = function anonymous( ) { -with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"fixed":""}},[_c('navbar',{attrs:{"type":"dark"},scopedSlots:_u([{key:"brand",fn:function(){return [_c('a',{staticClass:"navbar-brand",attrs:{"href":"/index.html","title":"Home"}},[_c('img',{attrs:{"width":"30px","src":"/favicon.ico"}})])]},proxy:true},{key:"right",fn:function(){return [_c('li',[_c('form',{staticClass:"navbar-form"},[_c('searchbar',{attrs:{"data":searchData,"placeholder":"Search","on-hit":searchCallback,"menu-align-right":""}})],1)])]},proxy:true}])},[_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/index.html"}},[_v("HOME")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/showcase.html"}},[_v("SHOWCASE")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/ug/index.html"}},[_v("USER GUIDE")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/dg/index.html"}},[_v("DEVELOPER GUIDE")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/about.html"}},[_v("ABOUT")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/contact.html"}},[_v("CONTACT")])]),_v(" "),_c('li',{attrs:{"tags":"dev"}},[_c('a',{staticClass:"nav-link",attrs:{"href":"https://reposense.org","target":"_blank"}},[_c('span',[_c('span',{staticClass:"fas fa-external-link-alt",attrs:{"aria-hidden":"true"}}),_v(" PRODUCTION SITE")])])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"https://github.com/RepoSense/reposense","target":"_blank"}},[_c('span',[_c('span',{staticClass:"fab fa-github",attrs:{"aria-hidden":"true"}})])])])]),_v(" "),_m(0)],1),_v(" "),_c('div',{attrs:{"id":"flex-body"}},[_c('overlay-source',{staticClass:"fixed-header-padding",attrs:{"id":"site-nav","tag-name":"nav","to":"site-nav"}},[_c('div',{staticClass:"site-nav-top"},[_c('div',{staticClass:"font-weight-bold mb-2",staticStyle:{"font-size":"1.25rem"}},[_c('span',[_c('strong',[_c('strong',[_v("USER GUIDE")])])])])]),_v(" "),_c('div',{staticClass:"nav-component slim-scroll"},[_c('div',[_c('site-nav',[_c('overlay-source',{staticClass:"site-nav-list site-nav-list-root",attrs:{"tag-name":"ul","to":"mb-site-nav"}},[_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/index.html"}},[_c('strong',[_v("Overview")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/generatingReports.html"}},[_c('strong',[_v("Generating reports")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/usingReports.html"}},[_c('strong',[_v("Using reports")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/customizingReports.html"}},[_c('strong',[_v("Customizing reports")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/sharingReports.html"}},[_c('strong',[_v("Sharing reports")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('strong',[_v("Appendices")]),_v(" "),_c('div',{staticClass:"site-nav-dropdown-btn-container"},[_c('i',{staticClass:"site-nav-dropdown-btn-icon site-nav-rotate-icon",attrs:{"onclick":"handleSiteNavClick(this.parentNode.parentNode, false); event.stopPropagation();"}},[_c('span',{staticClass:"glyphicon glyphicon-menu-down",attrs:{"aria-hidden":"true"}})])])]),_c('ul',{staticClass:"site-nav-dropdown-container site-nav-dropdown-container-open site-nav-list"},[_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/cli.html"}},[_v("CLI syntax reference")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/configFiles.html"}},[_v("Config files format")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/authorConfigSyntax.html"}},[_v("Advanced syntax: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/usingAuthorTags.html"}},[_v("Using "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("@@author")]),_v(" tags")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/withNetlify.html"}},[_v("RepoSense with Netlify")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/withGithubActions.html"}},[_v("RepoSense with GitHub Actions")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/withTravis.html"}},[_v("RepoSense with Travis")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/runSh.html"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("run.sh")]),_v(" format")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/faq.html"}},[_v("FAQ")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/troubleshooting.html"}},[_v("Troubleshooting")])])])])])])],1)],1)])]),_v(" "),_c('div',{staticClass:"fixed-header-padding",attrs:{"id":"content-wrapper"}},[_m(1),_v(" "),_c('div',{attrs:{"id":"section-setting-up"}},[_m(2),_v(" "),_m(3),_v(" "),_c('div',[_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("The instructions below assume you are using GitHub pages to host your report.")])]),_v(" "),_m(4)],1),_v(" "),_m(5),_v(" "),_m(6),_v(" "),_m(7),_v(" "),_c('div',[_m(8),_v(" "),_c('div',{staticClass:"indented-level0"},[_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('span',[_c('span',{staticClass:"glyphicon glyphicon-log-in",attrs:{"aria-hidden":"true"}})]),_v(" Appendix: "),_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("run.sh")]),_v(" format")])])]},proxy:true}])},[_v(" "),_c('div',[_c('h1',{staticClass:"display-4",attrs:{"id":"appendix-run-sh-format"}},[_c('span',[_v("Appendix: run.sh format")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#appendix-run-sh-format","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{staticClass:"lead"},[_c('p',[_c('a',{attrs:{"href":"https://github.com/reposense/publish-RepoSense/blob/master/run.sh"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("run.sh")])]),_v(" is a script used for automating RepoSense report generation.")])]),_v(" "),_c('h3',{attrs:{"id":"customizing-the-reposense-command"}},[_v("Customizing the RepoSense command"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#customizing-the-reposense-command","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("You can update the RepoSense command (i.e., the last line) in the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("run.sh")]),_v(" to match your needs.")]),_v(" "),_c('div',{staticClass:"indented-level0"},[_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('span',[_c('span',{staticClass:"glyphicon glyphicon-log-in",attrs:{"aria-hidden":"true"}})]),_v(" Appendix: "),_c('strong',[_v("CLI syntax reference")])])]},proxy:true}])},[_v(" "),_c('div',[_c('h1',{staticClass:"display-4",attrs:{"id":"appendix-cli-syntax-reference"}},[_c('span',[_v("Appendix: CLI syntax reference")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#appendix-cli-syntax-reference","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{staticClass:"lead"},[_c('p',[_v("The command "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar")]),_v(" takes several flags.")])]),_v(" "),_c('box',[_c('p',[_c('strong',[_v("Examples")]),_v(":")]),_v(" "),_c('p',[_v("An example of a command using most parameters:"),_c('br'),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar --repos https://github.com/reposense/RepoSense.git --output ./report_folder --since 31/1/2017 --until 31/12/2018 --formats java adoc xml --view --ignore-standalone-config --last-modified-date --timezone UTC+08 --find-previous-authors --analyze-authorship --originality-threshold 0.66")])]),_v(" "),_c('p',[_v("Same command as above but using most parameters in alias format:"),_c('br'),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar -r https://github.com/reposense/RepoSense.git -o ./report_folder -s 31/1/2017 -u 31/12/2018 -f java adoc xml -v -i -l -t UTC+08 -F -A -ot 0.66")])])]),_v(" "),_c('p',[_v("The section below provides explanations for each of the flags.")]),_v(" "),_c('h3',{attrs:{"id":"analyze-authorship-a"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--analyze-authorship")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-A")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#analyze-authorship-a","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--analyze-authorship")])]),_v(": Performs further analysis to distinguish between partial and full credit attribution for\nlines of code assigned to the author.")]),_v(" "),_c('ul',[_c('li',[_v("Default: this feature is turned "),_c('em',[_c('strong',[_v("off")])]),_v(" by default and the author will receive partial credits for all lines of\ncode, as the code lines are at least partial credit but may not qualify for full credit.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-A")]),_v(" (upper case)")]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--analyze-authorship")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-A")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("A darker background colour represents full credit, while a lighter background colour represents partial credit.")]),_v(" "),_c('p',[_v("If the code is attributed to a different author by the user via "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("@@author")]),_v(" tag, then the new author will be given\npartial credit.")])]),_v(" "),_c('h3',{attrs:{"id":"assets-a"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--assets")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-a")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#assets-a","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{attrs:{"id":"section-assets"}},[_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--assets ASSETS_DIRECTORY")])]),_v(": Specifies where to place assets for report generation.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ASSETS_DIRECTORY")]),_v(" The directory containing the assets files. A "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("favicon.ico")]),_v(" file can be placed here to customize the favicon of the dashboard, while a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("title.md")]),_v(" file can be placed to customize the "),_c('a',{attrs:{"href":"https://reposense.org/ug/customizingReports.html#add-a-title"}},[_v("title")]),_v(" of the report using "),_c('a',{attrs:{"href":"https://www.markdownguide.org/basic-syntax/"}},[_v("Markdown syntax")]),_v(".")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-a")])]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--assets ./assets")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-a ./assets")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("If "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--assets")]),_v(" is not specified, RepoSense looks for assets in the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./assets")]),_v(" directory.")])])])],1),_v(" "),_c('h3',{attrs:{"id":"config-c"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--config")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-c")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#config-c","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{attrs:{"id":"section-config"}},[_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--config CONFIG_DIRECTORY")])]),_v(": Specifies that config files located in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("CONFIG_DIRECTORY")]),_v(" should be used to customize the report.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("CONFIG_DIRECTORY")]),_v(" The directory containing the config files. Should contain a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(" file. Optionally, can contain an "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(" file or/and a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("group-config.csv")]),_v(" file or/and a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("report-config.json")]),_v(" file or/and a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("blurbs.md")]),_v(" file.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-c")])]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar --config ./config")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("Cannot be used with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repos")]),_v(". The "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repos")]),_v(" flag will take precedence over this flag.")]),_v(" "),_c('li',[_v("If both "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repos")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--config")]),_v(" are not specified, RepoSense looks for config files in the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./config")]),_v(" directory.")]),_v(" "),_c('li',[_v("Config files must follow "),_c('a',{attrs:{"href":"/RepoSense/ug/configFiles.html"}},[_v("this")]),_v(" format.")])])])],1),_v(" "),_c('h3',{attrs:{"id":"formats-f"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--formats")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-f")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#formats-f","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--formats LIST_OF_FORMATS")])]),_v(": Specifies which file extensions to be included in the analysis.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("LIST_OF_FORMATS")]),_v(" A space-separated list of file extensions that should be included in the analysis."),_c('br'),_v("\nDefault: all file formats")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-f")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--formats css fxml gradle")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-f css fxml gradle")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Binary file formats, such as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("jpg")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("png")]),_v(","),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("exe")]),_v(","),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("zip")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("rar")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("docx")]),_v(", and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("pptx")]),_v(", all will be labelled as the file type "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("binary")]),_v(" in the generated report.")])]),_v(" "),_c('h3',{attrs:{"id":"find-previous-authors-f"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--find-previous-authors")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-F")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#find-previous-authors-f","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--find-previous-authors")])]),_v(": Utilizes Git blame's ignore revisions functionality, RepoSense will attempt to blame the line changes caused by commits in the ignore commit list to the previous authors who altered those lines (if available).")]),_v(" "),_c('ul',[_c('li',[_v("Default: RepoSense will assume that no authors are responsible for the code changes in the lines altered by commits in the ignore commit list.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-F")]),_v(" (uppercase F)")]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--find-previous-authors")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-F")])])]),_v(" "),_c('h3',{attrs:{"id":"help-h"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--help")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-h")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#help-h","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--help")])]),_v(": Shows the help message.")]),_v(" "),_c('ul',[_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-h")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Cannot be used with any other flags. This flag takes precedence over all other flags.")])]),_v(" "),_c('h3',{attrs:{"id":"ignore-standalone-config-i"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--ignore-standalone-config")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-i")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#ignore-standalone-config-i","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--ignore-standalone-config")])]),_v(": Specifies that the standalone config file in the repo should be ignored.")]),_v(" "),_c('ul',[_c('li',[_v("Default: the standalone config file is not ignored")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-i")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--ignore-standalone-config")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-i")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("This flag overrides the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Ignore standalone config")]),_v(" field in the CSV config file.")])]),_v(" "),_c('h3',{attrs:{"id":"ignore-filesize-limit-i"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--ignore-filesize-limit")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-I")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#ignore-filesize-limit-i","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--ignore-filesize-limit")])]),_v(": Specifies that the file size limit (both default and user-defined) should be ignored during the analysis.")]),_v(" "),_c('ul',[_c('li',[_v("Default: the file size limit is not ignored")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-I")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--ignore-filesize-limit")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-I")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("All files are subject to a default file size limit or a custom size limit set by the user. Most files should not be\naffected by the default size limit. This flag can be useful for including files in your report that are affected by\nthe size limit. Note that this flag may result in large report sizes and/or slower report generation.")])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("This flag overrides the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Ignore file size limit")]),_v(" field in the CSV config file.")])]),_v(" "),_c('h3',{attrs:{"id":"last-modified-date-l"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--last-modified-date")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-l")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#last-modified-date-l","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--last-modified-date")])]),_v(": Specifies that the last modified date of each line of code should be added to "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("authorship.json")]),_v(".")]),_v(" "),_c('ul',[_c('li',[_v("Default: the last modified date of each line of code will not be added to "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("authorship.json")])]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-l")]),_v(" (lowercase L)")]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--last-modified-date")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-l")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("Cannot be used with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--shallow-cloning")]),_v(". This may result in an incorrect last modified date.")]),_v(" "),_c('li',[_v("The last modified dates will be in the same timezone specified with the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--timezone")]),_v(" flag.")])])]),_v(" "),_c('h3',{attrs:{"id":"originality-threshold-ot"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--originality-threshold")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-ot")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#originality-threshold-ot","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--originality-threshold [VALUE]")])]),_v(": Specifies the cut-off point for partial and full credit\nin "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--analyze-authorship")]),_v(". Author will be given full credit if their contribution exceeds this threshold, else partial\ncredit is given.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("VALUE")]),_v(" Optional. Acceptable range: [0.0, 1.0]."),_c('br'),_v("\nDefault: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("0.51")])]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-ot")])]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--originality-threshold 0.66")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-ot 0.66")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("Requires "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--analyze-authorship")]),_v(" flag.")]),_v(" "),_c('li',[_v("An author's contribution, or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("originality score")]),_v(", is calculated using Levenshtein Distance (Edit Distance) algorithm.\nWe compare the difference between current code line and its previous versions.")])])]),_v(" "),_c('h3',{attrs:{"id":"output-o"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--output")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-o")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#output-o","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--output OUTPUT_DIRECTORY")])]),_v(": Indicates where to save the report generated.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("OUTPUT_DIRECTORY")]),_v(" The location for the generated "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("reposense-report")]),_v(" folder."),_c('br'),_v("\nDefault: current directory")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-o")])]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--output ./foo")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-o ./foo")]),_v(" (the report will be in the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./foo/reposense-report")]),_v(" folder)")])]),_v(" "),_c('h3',{attrs:{"id":"period-p"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--period")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-p")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#period-p","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--period PERIOD")])]),_v(": Specifies the period of analysis window.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("PERIOD")]),_v(" The period of analysis window, in the format "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("nd")]),_v(" (for n days) or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("nw")]),_v(" (for n weeks). It is used to calculate end date if only start date is specified, or calculate end date if only start date is specified.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-p")])]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--period 30d")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--period 4w")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("If both start date and end date are not specified, the date of generating the report will be taken as the end date.")]),_v(" "),_c('li',[_v("May analyze the incorrect date range if used with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since d1")]),_v(". The program will throw a warning.")]),_v(" "),_c('li',[_v("Cannot be used with both "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--until")]),_v(". The program will throw an exception.")])])]),_v(" "),_c('h3',{attrs:{"id":"repo-repos-r"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repo")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repos")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-r")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#repo-repos-r","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repo REPO_LOCATION")])]),_v(": Specifies which repositories to analyze.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("REPO_LOCATION")]),_v(" A list of URLs or the disk location of the git repositories to analyze, separated by spaces.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-r")])]),_v(" "),_c('li',[_v("Examples:\n"),_c('ul',[_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repos https://github.com/reposense/RepoSense.git")])]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repo https://github.com/reposense/RepoSense.git c:/myRepose/foo/bar")]),_v(": analyzes the two specified repos (one remote, one local) and generates one report containing details of both.")])])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Cannot be used with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--config")]),_v(". This flag takes precedence over "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--config")]),_v(".")])]),_v(" "),_c('h3',{attrs:{"id":"shallow-cloning-s"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--shallow-cloning")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-S")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#shallow-cloning-s","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--shallow-cloning")])]),_v(": Clones repositories using Git's shallow cloning functionality, which can significantly reduce the time taken to clone large repositories. However, the flag should not be used for smaller repositories where the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(".git")]),_v(" file is smaller than 500 MB, as it would create overhead.")]),_v(" "),_c('ul',[_c('li',[_v("Default: RepoSense does not clone repositories using Git's shallow cloning functionality.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-S")]),_v(" (uppercase S)")]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--shallow-cloning")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-S")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Cannot be used with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--last-modified-date")]),_v(". This may result in an incorrect last modified date.")])]),_v(" "),_c('h3',{attrs:{"id":"since-s"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-s")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#since-s","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since START_DATE")])]),_v(": Specifies the start date for the period to be analyzed.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("START_DATE")]),_v(" The first day of the period to be analyzed, in the format "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("DD/MM/YYYY")]),_v("."),_c('br'),_v("\nDefault: one month before the current date")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-s")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since 21/10/2017")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-s 21/10/2017")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("If the start date is not specified, only commits made one month before the end date (if specified) or the date of generating the report, will be captured and analyzed.")]),_v(" "),_c('li',[_v("If "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("d1")]),_v(" is specified as the start date ("),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since d1")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-s d1")]),_v("), then the program will search for the earliest commit date of all repositories and use that as the start date.")]),_v(" "),_c('li',[_v("If "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("d1")]),_v(" is specified together with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--period")]),_v(", then the program will warn that the date range being analyzed may be incorrect.")])])]),_v(" "),_c('h3',{attrs:{"id":"timezone-t"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--timezone")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-t")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#timezone-t","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--timezone ZONE_ID")])]),_v(": Indicates the timezone to be used for the analysis.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ZONE_ID")]),_v(" The timezone in the format "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ZONE_ID[±hh[mm]]")]),_v("."),_c('br'),_v("\nDefault: system's default timezone")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-t")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--timezone UTC+08")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-t UTC-1030")])])]),_v(" "),_c('h3',{attrs:{"id":"until-u"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--until")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-u")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#until-u","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--until END_DATE")])]),_v(": Specifies the end date of the analysis period.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("END_DATE")]),_v(" The last date of the period to be analyzed, in the format "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("DD/MM/YYYY")]),_v("."),_c('br'),_v("\nDefault: current date")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-u")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--until 21/10/2017")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-u 21/10/2017")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Note: If the end date is not specified, the date of generating the report will be taken as the end date.")])]),_v(" "),_c('h3',{attrs:{"id":"version-v"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--version")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-V")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#version-v","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--version")])]),_v(": Shows the version of RepoSense.")]),_v(" "),_c('ul',[_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-V")]),_v(" (upper case)")])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Cannot be used with any other flags. This flag takes precedence over all other flags other than "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--help")]),_v(".")])]),_v(" "),_c('h3',{attrs:{"id":"view-v"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--view")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-v")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#view-v","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--view [REPORT_FOLDER]")])]),_v(": Specifies that the report should be opened in the default browser.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("REPORT_FOLDER")]),_v(" Optional. If specified, no analysis will be performed and the report specified by the argument will be opened."),_c('br'),_v("\nDefault: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./reposense-report")])]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-v")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--view")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-v")])])])],1)])],1),_v(" "),_c('p'),_v(" "),_c('h3',{attrs:{"id":"specifying-which-version-of-reposense-to-use"}},[_v("Specifying which version of RepoSense to use"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#specifying-which-version-of-reposense-to-use","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Depending on which version you wish to use for report generation, add one of the following flags to the line "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./get-reposense.py")]),_v(" in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("run.sh")]),_v(" (e.g., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./get-reposense.py --release")]),_v("):")]),_v(" "),_c('ul',[_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--release")]),_v(": Use the latest release (Stable)")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--master")]),_v(": Use the latest version of the master branch")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--tag TAG")]),_v(" (e.g. "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--tag v1.6.1")]),_v("): Use the version identified by the Git tag given")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--commit COMMIT")]),_v(" (e.g. "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--commit abc123")]),_v("): Use the version identified by the Git commit SHA given")])])])])],1),_v(" "),_c('p'),_v(" "),_c('div',{staticClass:"indented-level0"},[_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('span',[_c('span',{staticClass:"glyphicon glyphicon-log-in",attrs:{"aria-hidden":"true"}})]),_v(" Appendix: "),_c('strong',[_v("Config files format")])])]},proxy:true}])},[_v(" "),_c('div',[_c('h1',{staticClass:"display-4",attrs:{"id":"appendix-config-files-format"}},[_c('span',[_v("Appendix: Config files format")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#appendix-config-files-format","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{staticClass:"lead"},[_c('p',[_v("Given below are the details of the various config files used by RepoSense.")])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_c('strong',[_v("RepoSense ignores the order of column headers in the CSV config files. However, the spelling of the column headers must match the specified headers exactly, or the column would be ignored by RepoSense.")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_c('strong',[_v("A value in a config file is optional to provide unless it is specified as "),_c('span',{staticClass:"badge bg-danger"},[_v("mandatory")])]),_v(".")])]),_v(" "),_c('h2',{attrs:{"id":"repo-config-csv"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#repo-config-csv","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(" file contains repo-level config data.")]),_v(" Each row represents a repository's configuration ("),_c('a',{attrs:{"href":"/RepoSense/ug/repo-config.csv"}},[_v("example")]),_v(").")]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Column Name")]),_v(" "),_c('th',[_v("Explanation")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_v("Repository's Location "),_c('span',{staticClass:"badge bg-danger"},[_v("mandatory")])]),_v(" "),_c('td',[_v("The "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Remote Repo URL")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Disk Path")]),_v(" to the git repository e.g., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://github.com/foo/bar.git")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("C:\\Users\\user\\Desktop\\GitHub\\foo\\bar")])])]),_v(" "),_c('tr',[_c('td',[_v("Branch")]),_v(" "),_c('td',[_v("The branch to analyze in the target repository e.g., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("master")]),_v(". Default: the default branch of the repo")])]),_v(" "),_c('tr',[_c('td',[_v("File formats"),_c('sup',[_v("*+")])]),_v(" "),_c('td',[_v("The file extensions to analyze. Binary file formats, such as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("png")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("jpg")]),_v(", will be automatically labelled as the file type "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("binary")]),_v(" in the generated report. Default: all file formats")])]),_v(" "),_c('tr',[_c('td',[_v("Find Previous Authors")]),_v(" "),_c('td',[_v("Enter "),_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("yes")])]),_v(" to utilize Git blame's ignore revisions functionality, RepoSense will attempt to blame the line changes caused by commits in the ignore commit list to the previous authors who altered those lines (if available).")])]),_v(" "),_c('tr',[_c('td',[_v("Ignore Glob List"),_c('sup',[_v("*+")])]),_v(" "),_c('td',[_v("The list of file path globs to ignore during analysis for each author e.g., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("test/**;temp/**")]),_v(". Refer to the "),_c('a',{attrs:{"href":"https://docs.oracle.com/javase/tutorial/essential/io/fileOps.html#glob"}},[_c('em',[_v("glob format")])]),_v(" for the path glob syntax.")])]),_v(" "),_c('tr',[_c('td',[_v("Ignore standalone config")]),_v(" "),_c('td',[_v("To ignore the standalone config file (if any) in target repository, enter "),_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("yes")])]),_v(". If the cell is empty, the standalone config file in the repo (if any) will take precedence over configurations provided in the csv files.")])]),_v(" "),_c('tr',[_c('td',[_v("Ignore Commits List"),_c('sup',[_v("*+")])]),_v(" "),_c('td',[_v("The list of commits to ignore during analysis. For accurate results, the commits should be provided with their full hash. Additionally, a range of commits can be specified using the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("..")]),_v(" notation e.g. "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("abc123..def456")]),_v(" (both inclusive).")])]),_v(" "),_c('tr',[_c('td',[_v("Ignore Authors List"),_c('sup',[_v("*+")])]),_v(" "),_c('td',[_v("The list of authors to ignore during analysis. Authors should be specified by their "),_c('a',{attrs:{"href":"#a-note-about-git-author-name"}},[_v("Git Author Name")]),_v(".")])]),_v(" "),_c('tr',[_c('td',[_v("Shallow Cloning")]),_v(" "),_c('td',[_v("Enter "),_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("yes")])]),_v(" to clone the repository using Git's shallow cloning functionality. This option can significantly reduce the time taken to clone large repositories. However, the option should ideally be disabled for smaller repositories where the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(".git")]),_v(" file is smaller than 500 MB, as it would create overhead.")])]),_v(" "),_c('tr',[_c('td',[_v("File Size Limit"),_c('sup',[_v("+")])]),_v(" "),_c('td',[_v("Enter a file size limit for the repository in bytes as a single number without units (for a size limit of 1MB for example, enter 1000000). This file size limit will override the default file size limit (500KB). Files exceeding the file size limit will be marked as ignored and only the file name and line count will be reflected in the report.")])]),_v(" "),_c('tr',[_c('td',[_v("Ignore File Size Limit")]),_v(" "),_c('td',[_v("Enter "),_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("yes")])]),_v(" to ignore both the default file size limit and the file size limit possibly set by the user in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(".")])]),_v(" "),_c('tr',[_c('td',[_v("Skip Ignored File Analysis")]),_v(" "),_c('td',[_v("Enter "),_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("yes")])]),_v(" to ignore analysis of files exceeding the file size limit entirely. If file analysis is skipped, all information about the file will be omitted from the generated report. This option can significantly improve report generation time.")])])])])]),_c('box',{attrs:{"type":"info","seamless":""}},[_v("\nThe Shallow Cloning option is incompatible with the \"--last-modified-date\" CLI flag.\n")]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_v("\nIf Ignore File Size Limit is yes, the File Size Limit and Skip Ignored File Analysis columns are ignored.\n")]),_v(" "),_c('p',[_c('sup',[_v("* "),_c('strong',[_v("Multi-value column")]),_v(": multiple values can be entered in this column using a semicolon "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(";")]),_v(" as the separator.")]),_c('br'),_v(" "),_c('sup',[_v("+ "),_c('strong',[_v("Overrideable column")]),_v(": prepend with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("override:")]),_v(" to use entered value(s) instead of value(s) from standalone config.")])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("When using "),_c('a',{attrs:{"href":"#config-json-standalone-config-file"}},[_v("standalone config")]),_v(" (if it is not ignored), it is possible to override specific values from the standalone config by prepending the entered value with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("override:")]),_v(".")])]),_v(" "),_c('h2',{attrs:{"id":"author-config-csv"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#author-config-csv","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Optionally, you can use an "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(" (which should be in the same directory as the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(" file) to provide more details about the authors to analyze ("),_c('a',{attrs:{"href":"/RepoSense/ug/author-config.csv"}},[_v("example")]),_v("). It should contain the following columns:")]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Column Name")]),_v(" "),_c('th',[_v("Explanation")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_v("Repository's Location"),_c('sup',[_v("*")])]),_v(" "),_c('td',[_v("Same as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(". Default: all the repos in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(".")])]),_v(" "),_c('tr',[_c('td',[_v("Branch")]),_v(" "),_c('td',[_v("The branch to analyze for this author, e.g., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("master")]),_v(". Default: the author will be bound to all the repos in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(" that has the same repo's location, regardless of branch.")])]),_v(" "),_c('tr',[_c('td',[_v("Author's Git Host ID"),_c('sup',[_v("#")]),_v(" "),_c('span',{staticClass:"badge bg-danger"},[_v("mandatory")])]),_v(" "),_c('td',[_v("Username of the target author's profile on GitHub, GitLab or Bitbucket, e.g."),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("JohnDoe")]),_v(".")])]),_v(" "),_c('tr',[_c('td',[_v("Author's Emails"),_c('sup',[_v("*")])]),_v(" "),_c('td',[_v("Associated emails of the author. For GitHub users, this can be found in your "),_c('a',{attrs:{"href":"https://github.com/settings/emails"}},[_v("GitHub settings")]),_v(".")])]),_v(" "),_c('tr',[_c('td',[_v("Author's Display Name")]),_v(" "),_c('td',[_v("The name to display for the author. Default: author's username.")])]),_v(" "),_c('tr',[_c('td',[_v("Author's Git Author Name"),_c('sup',[_v("*")])]),_v(" "),_c('td',[_v("The meaning of "),_c('em',[_v("Git Author Name")]),_v(" is explained in "),_c('a',{attrs:{"href":"#a-note-about-git-author-name"}},[_c('em',[_v("A note about git author name")])]),_v(".")])]),_v(" "),_c('tr',[_c('td',[_v("Ignore Glob List"),_c('sup',[_v("*")])]),_v(" "),_c('td',[_v("Files to ignore for this author, in addition to files ignored by the patterns specified in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(". The path glob syntax is the same as that of Ignore Glob List in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(".")])])])])]),_c('p',[_c('sup',[_v("* "),_c('strong',[_v("Multi-value column")]),_v(": multiple values can be entered in this column using a semicolon "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(";")]),_v(" as the separator.")]),_v(" "),_c('br'),_v(" "),_c('sup',[_v("# For backward compatibility, "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Author's GitHub ID")]),_v(" is still accepted as the header in place of "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Author's Git Host ID")]),_v(".")])]),_v(" "),_c('p',[_v("If "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(" is not given and the repo has not provided author details in a standalone config file, all the authors of the repositories within the date range specified (if any) will be analyzed.")]),_v(" "),_c('p',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(" has some advanced syntax that can help to reduce duplication of the author's information. The syntax guide is given below:")]),_v(" "),_c('div',{staticClass:"indented-level0"},[_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('span',[_c('span',{staticClass:"glyphicon glyphicon-log-in",attrs:{"aria-hidden":"true"}})]),_v(" Appendix: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(" advanced syntax")])]},proxy:true}])},[_v(" "),_c('div',[_c('h1',{staticClass:"display-4",attrs:{"id":"appendix-author-config-csv-advanced-syntax"}},[_c('span',[_v("Appendix: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(" advanced syntax")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#appendix-author-config-csv-advanced-syntax","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{staticClass:"lead"},[_c('p',[_v("Given below are the advanced syntax available for "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(".")])]),_v(" "),_c('h2',{attrs:{"id":"multiple-repository-s-location-per-author"}},[_v("Multiple "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repository's Location")]),_v(" per author"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#multiple-repository-s-location-per-author","onclick":"event.stopPropagation()"}})]),_v(" "),_c('h4',{attrs:{"id":"specifying-multiple-repository-s-location"}},[_v("Specifying multiple "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repository's Location")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#specifying-multiple-repository-s-location","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("To specify multiple "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repository's Location")]),_v(" in a single row, we can use a semicolon "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(";")]),_v(" as a separator.")]),_v(" "),_c('p',[_v("Below is an example:")]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Repository's Location")]),_v(" "),_c('th',[_v("Branch")]),_v(" "),_c('th',[_v("Author's Git Host ID")]),_v(" "),_c('th',[_v("... Hidden columns")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://github.com/reposense/RepoSense.git;https://github.com/MarkBind/markbind.git")])]),_v(" "),_c('td',[_v("master")]),_v(" "),_c('td',[_v("sikai00")]),_v(" "),_c('td',[_v("--")])])])])]),_c('p',[_v("We have now furnished author details for both repositories in a single row, instead of having two individual rows per "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repository's Location")]),_v(".")]),_v(" "),_c('br'),_v(" "),_c('h4',{attrs:{"id":"specifying-repository-s-location-with-one-or-more-specific-branches"}},[_v("Specifying "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repository's Location")]),_v(" with one or more specific branches"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#specifying-repository-s-location-with-one-or-more-specific-branches","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("To list out one or more branches for a particular "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repository's Location")]),_v(", we can use a pipe "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("|")]),_v(" separator to demarcate the different branches.")]),_v(" "),_c('p',[_v("Below is an example:")]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Repository's Location")]),_v(" "),_c('th',[_v("Branch")]),_v(" "),_c('th',[_v("Author's Git Host ID")]),_v(" "),_c('th',[_v("... Hidden columns")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://github.com/reposense/RepoSense.git~master|release|cypress")])]),_v(" "),_c('td',[_v("master")]),_v(" "),_c('td',[_v("sikai00")]),_v(" "),_c('td',[_v("--")])])])])]),_c('p',[_v("We have now provided author details for three different branches in a single repo, using a single row.")]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("The branch specified through the delimiter syntax will take precedence over the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Branch")]),_v(" column.")])]),_v(" "),_c('h2',{attrs:{"id":"using-github-branch-url-as-repository-s-location"}},[_v("Using GitHub branch URL as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repository's Location")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#using-github-branch-url-as-repository-s-location","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("We can also use GitHub branch URL as copied from the address bar directly, to be able to quickly use the URL to specify the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repository's Location")]),_v(" and a specific "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Branch")]),_v(" at the same time.")]),_v(" "),_c('p',[_v("Below is an example:")]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Repository's Location")]),_v(" "),_c('th',[_v("Branch")]),_v(" "),_c('th',[_v("Author's Git Host ID")]),_v(" "),_c('th',[_v("... Hidden columns")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://github.com/reposense/RepoSense/tree/release")])]),_v(" "),_c('td'),_v(" "),_c('td',[_v("sikai00")]),_v(" "),_c('td',[_v("--")])])])])]),_c('p',[_v("There is no need to specify the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Branch")]),_v(" column now, as we have specified it through the GitHub branch URL.")]),_v(" "),_c('box',{attrs:{"type":"warning","seamless":""}},[_c('p',[_v("GitLab and BitBucket branch URL are not supported at the moment.")])]),_v(" "),_c('h2',{attrs:{"id":"combining-the-advanced-syntax"}},[_v("Combining the advanced syntax"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#combining-the-advanced-syntax","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("It is possible to combine the above-mentioned advanced syntax. By doing so, we can go from:")]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Repository's Location")]),_v(" "),_c('th',[_v("Branch")]),_v(" "),_c('th',[_v("Author's Git Host ID")]),_v(" "),_c('th',[_v("... Hidden columns")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://github.com/MarkBind/markbind/tree/vue3-migration")])]),_v(" "),_c('td'),_v(" "),_c('td',[_v("sikai00")]),_v(" "),_c('td',[_v("--")])]),_v(" "),_c('tr',[_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://github.com/reposense/RepoSense.git")])]),_v(" "),_c('td',[_v("master")]),_v(" "),_c('td',[_v("sikai00")]),_v(" "),_c('td',[_v("--")])]),_v(" "),_c('tr',[_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://github.com/reposense/RepoSense.git")])]),_v(" "),_c('td',[_v("cypress")]),_v(" "),_c('td',[_v("sikai00")]),_v(" "),_c('td',[_v("--")])])])])]),_c('p',[_v("to:")]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Repository's Location")]),_v(" "),_c('th',[_v("Branch")]),_v(" "),_c('th',[_v("Author's Git Host ID")]),_v(" "),_c('th',[_v("... Hidden columns")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://github.com/MarkBind/markbind/tree/vue3-migration;https://github.com/reposense/RepoSense.git~master|cypress")])]),_v(" "),_c('td'),_v(" "),_c('td',[_v("sikai00")]),_v(" "),_c('td',[_v("--")])])])])]),_c('br')],1)])],1),_v(" "),_c('p'),_v(" "),_c('h2',{attrs:{"id":"group-config-csv"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("group-config.csv")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#group-config-csv","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Optionally, you can provide a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("group-config.csv")]),_v("(which should be in the same directory as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(" file) to provide details on any custom groupings for files in specified repositories ("),_c('a',{attrs:{"href":"/RepoSense/ug/group-config.csv"}},[_v("example")]),_v("). It should contain the following columns:")]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Column Name")]),_v(" "),_c('th',[_v("Explanation")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_v("Repository's Location")]),_v(" "),_c('td',[_v("Same as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(". Default: all the repos in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")])])]),_v(" "),_c('tr',[_c('td',[_v("Group Name "),_c('span',{staticClass:"badge bg-danger"},[_v("mandatory")])]),_v(" "),_c('td',[_v("Name of the group, e.g.,"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("test")]),_v(".")])]),_v(" "),_c('tr',[_c('td',[_v("Globs * "),_c('span',{staticClass:"badge bg-danger"},[_v("mandatory")])]),_v(" "),_c('td',[_v("The list of file path globs to include for specified group, e.g.,"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("**/test/*;**.java")]),_v(".")])])])])]),_c('p',[_c('sup',[_v("* "),_c('strong',[_v("Multi-value column")]),_v(": multiple values can be entered in this column using a semicolon "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(";")]),_v(" as the separator.")])]),_v(" "),_c('p',[_v("Note that a file in a given repository should only be tagged to one group. "),_c('br'),_v("\ne.g.: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("example.java")]),_v(" in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("example-repo")]),_v(" can either be in the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("test")]),_v(" group or the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("code")]),_v(" group, but not in both "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("test")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("code")]),_v(" group. If multiple groups are specified for a given file, the latter group (i.e., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("code")]),_v(" group) is set for the file.")]),_v(" "),_c('h2',{attrs:{"id":"report-config-json"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("report-config.json")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#report-config-json","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("You can optionally use "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("report-config.json")]),_v(" to customize report generation by providing the following information. ("),_c('a',{attrs:{"href":"/RepoSense/ug/report-config.json"}},[_v("example")]),_v(")")]),_v(" "),_c('p',[_c('strong',[_v("Fields to provide")]),_v(":")]),_v(" "),_c('ul',[_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("title")]),_v(": Title of the generated report, which is also the title of the deployed dashboard. Default: \"RepoSense Report\"")])]),_v(" "),_c('div',{attrs:{"id":"section-standalone"}},[_c('h2',{attrs:{"id":"config-json-standalone-config-file"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("config.json")]),_v(" (standalone config file)"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#config-json-standalone-config-file","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Repo owners can provide the following additional information to RepoSense using a config file that we call the "),_c('strong',[_c('em',[_v("standalone config file")])]),_v(":")]),_v(" "),_c('ul',[_c('li',[_v("which files/authors/commits to analyze/omit")]),_v(" "),_c('li',[_v("which git and git host usernames belong to which authors")]),_v(" "),_c('li',[_v("the display of an author")])]),_v(" "),_c('p',[_v("To use this feature, add a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("_reposense/config.json")]),_v(" to the root of your repo using the format in the example below ("),_c('a',{attrs:{"href":"https://github.com/reposense/RepoSense/blob/master/_reposense/config.json"}},[_v("another example")]),_v(") and "),_c('strong',[_v("commit it")]),_v(" (reason: RepoSense can see committed code only):")]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"no-line-numbers hljs json"}},[_c('span',[_v("{\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"ignoreGlobList\"")]),_v(": ["),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"about-us/**\"")]),_v(", "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"**index.html\"")]),_v("],\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"formats\"")]),_v(": ["),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"html\"")]),_v(", "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"css\"")]),_v("],\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"ignoreCommitList\"")]),_v(": ["),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"90018e49f129ce7e0abdc8b18e91c9813588c601\"")]),_v(", "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"67890def\"")]),_v(", "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"abc123..def456\"")]),_v("],\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"ignoreAuthorList\"")]),_v(": ["),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"charlie\"")]),_v("],\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"authors\"")]),_v(":\n")]),_c('span',[_v(" [\n")]),_c('span',[_v(" {\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"gitId\"")]),_v(": "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"alice\"")]),_v(",\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"emails\"")]),_v(": ["),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"alice@example.com\"")]),_v(", "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"alicet@example.com\"")]),_v("],\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"displayName\"")]),_v(": "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"Alice T.\"")]),_v(",\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"authorNames\"")]),_v(": ["),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"AT\"")]),_v(", "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"A\"")]),_v("],\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"ignoreGlobList\"")]),_v(": ["),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"**.css\"")]),_v("]\n")]),_c('span',[_v(" },\n")]),_c('span',[_v(" {\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"gitId\"")]),_v(": "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"bob\"")]),_v("\n")]),_c('span',[_v(" }\n")]),_c('span',[_v(" ]\n")]),_c('span',[_v("}\n")])])]),_c('p',[_v("Note: all fields are optional unless specified otherwise.")]),_v(" "),_c('p',[_c('strong',[_v("Fields to provide "),_c('em',[_v("repository-level")]),_v(" info")]),_v(":")]),_v(" "),_c('ul',[_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ignoreGlobList")]),_v(": Folders/files to ignore, specified using the "),_c('a',{attrs:{"href":"https://docs.oracle.com/javase/tutorial/essential/io/fileOps.html#glob"}},[_c('em',[_v("glob format")])]),_v(".")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("formats")]),_v(": File formats to analyze. Binary file formats, such as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("png")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("jpg")]),_v(", will be automatically labelled as the file type "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("binary")]),_v(" in the generated report. Default: all file formats")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ignoreCommitList")]),_v(": The list of commits to ignore during analysis. For accurate results, the commits should be provided with their full hash. Additionally, a range of commits can be specified using the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("..")]),_v(" notation e.g. "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("abc123..def456")]),_v(" (both inclusive).")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ignoreAuthorList")]),_v(": The list of authors to ignore during analysis. Authors specified in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("authors")]),_v(" field or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(" will be also be omitted if they are in this list. Authors should be specified by their "),_c('a',{attrs:{"href":"#a-note-about-git-author-name"}},[_v("Git Author Name")]),_v(".")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("fileSizeLimit")]),_v(": A file size limit for the repository in bytes as a single number without units, that will override the default file size limit. If not specified, the default file size limit will continue to be used.")])]),_v(" "),_c('p',[_c('strong',[_v("Fields to provide "),_c('em',[_v("author-level")]),_v(" info")]),_v(":"),_c('br'),_v("\nNote: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("authors")]),_v(" field should contain "),_c('em',[_v("all")]),_v(" authors that should be captured in the analysis.")]),_v(" "),_c('ul',[_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("gitId")]),_v(": Username of the author. "),_c('span',{staticClass:"badge bg-danger"},[_v("mandatory")]),_v(" field.")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("emails")]),_v(": Associated git emails of the author. For GitHub, this can be found in your "),_c('a',{attrs:{"href":"https://github.com/settings/emails"}},[_v("GitHub settings")]),_v(".")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("displayName")]),_v(": Name to display on the report for this author.")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("authorNames")]),_v(": Git Author Name(s) used in the author's commits. By default, RepoSense assumes an author would use their remote Git Host username as the Git username too. The meaning of "),_c('em',[_v("Git Author Name")]),_v(" is explained in "),_c('a',{attrs:{"href":"#a-note-about-git-author-name"}},[_c('em',[_v("A note about git author name")])]),_v(".")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ignoreGlobList")]),_v(": "),_c('em',[_v("Additional")]),_v(" (i.e. on top of the repo-level "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ignoreGlobList")]),_v(") folders/files to ignore for a specific author. The path glob syntax is specified by the "),_c('a',{attrs:{"href":"https://docs.oracle.com/javase/tutorial/essential/io/fileOps.html#glob"}},[_c('em',[_v("glob format")])]),_v(". In the example above, the actual "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ignoreGlobList")]),_v(" for "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("alice")]),_v(" would be "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("[\"about-us/**\", \"**index.html\", \"**.css\"]")]),_v(".")])]),_v(" "),_c('p',[_v("To verify your standalone configuration is as intended, add the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("_reposense/config.json")]),_v(" to your local copy of repo and run RepoSense against it as follows:"),_c('br')]),_v(" "),_c('ul',[_c('li',[_v("Format: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar --repo LOCAL_REPO_LOCATION")]),_v(" "),_c('br')]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar --repo c:/myRepose/foo/bar")]),_c('br'),_v("\nAfter that, view the report to see if the configuration you specified in the config file is being reflected correctly in the report.")])]),_v(" "),_c('h2',{attrs:{"id":"a-note-about-git-author-name"}},[_v("A note about git author name"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#a-note-about-git-author-name","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Git Author Name")]),_v(" refers to the customizable author's display name set in the local "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(".gitconfig")]),_v(" file. For example, in the Git Log's display:")]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"no-line-numbers hljs"}},[_c('span',[_v("...\n")]),_c('span',[_v("commit cd7f610e0becbdf331d5231887d8010a689f87c7\n")]),_c('span',[_v("Author: ConfiguredAuthorName \n")]),_c('span',[_v("Date: Fri Feb 9 19:14:41 2018 +0800\n")]),_c('span',[_v("\n")]),_c('span',[_v(" Make some changes to show my new author's name\n")]),_c('span',[_v("\n")]),_c('span',[_v("commit e3f699fd4ef128eebce98d5b4e5b3bb06a512f49\n")]),_c('span',[_v("Author: ActualGitHostId \n")]),_c('span',[_v("Date: Fri Feb 9 19:13:13 2018 +0800\n")]),_c('span',[_v("\n")]),_c('span',[_v(" Initial commit\n")]),_c('span',[_v(" ...\n")])])]),_c('p',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ActualGitHostId")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ConfiguredAuthorName")]),_v(" are both "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Git Author Name")]),_v(" of the same author."),_c('br'),_v("\nTo find the author name that you are currently using for your current git repository, run the following command within your git repository:")]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"no-line-numbers hljs"}},[_c('span',[_v("git config user.name\n")])])]),_c('p',[_v("To set the author name to the value you want (e.g., to set it to your GitHub username) for your current git repository, you can use the following command ("),_c('a',{attrs:{"href":"https://www.git-tower.com/learn/git/faq/change-author-name-email"}},[_v("more info")]),_v("):")]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"no-line-numbers hljs"}},[_c('span',[_v("git config user.name \"YOUR_AUTHOR_NAME”\n")])])]),_c('p',[_v("To set the author name to use a default value you want for future git repositories, you can use the following command:")]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"no-line-numbers hljs"}},[_c('span',[_v("git config --global user.name \"YOUR_AUTHOR_NAME”\n")])])]),_c('p',[_v("RepoSense expects the Git Author Name to be the same as author's username on the Git hosting platform (GitHub, GitLab, BitBucket). If an author's "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Git Author Name")]),_v(" is different from their username on the Git hosting platform, the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Git Author Name")]),_v(" needs to be specified in the standalone config file. If the author has more than one "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Git Author Name")]),_v(", multiple values can be entered too.")]),_v(" "),_c('box',{attrs:{"type":"warning","seamless":""}},[_c('p',[_v("Note: Symbols such as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("\"")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("!")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("/")]),_v(" etc. in your author name will be omitted, which may reduce the accuracy of the analysis if 2 names in the repository are approximately similar.")])])],1),_v(" "),_c('div',{attrs:{"id":"section-blurbs"}},[_c('h2',{attrs:{"id":"blurbs-md"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("blurbs.md")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#blurbs-md","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("You can optionally use "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("blurbs.md")]),_v(" to add blurbs in Markdown syntax for repository branches. These blurbs will be seen when grouping by "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repo/Branch")]),_v(". ("),_c('a',{attrs:{"href":"https://github.com/reposense/RepoSense/blob/master/docs/ug/blurbs.md"}},[_v("example")]),_v(")")]),_v(" "),_c('p',[_c('strong',[_v("Format")]),_v(":")]),_v(" "),_c('ul',[_c('li',[_v("First line in section: Link to the repository branch.")]),_v(" "),_c('li',[_v("Second line onwards: Blurb content.")]),_v(" "),_c('li',[_v("Delimiter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("")]),_v(". Everything on the line after the delimiter will be ignored.")])])])],1)])],1),_v(" "),_c('p')]),_v(" "),_m(9),_v(" "),_m(10),_v(" "),_c('box',{attrs:{"type":"tip","seamless":""}},[_c('p',[_v("There is also a published GitHub Action ("),_c('a',{attrs:{"href":"https://github.com/marketplace/actions/reposense-action"}},[_v("reposense-action")]),_v(") that can be used to generate and publish RepoSense reports. It is especially convenient for users who wish to skip the forking and setting up of a separate repository. For more information, refer to the "),_c('a',{attrs:{"href":"https://github.com/marketplace/actions/reposense-action#usage"}},[_v("usage description")]),_v(".")])])],1),_v(" "),_m(11)])],1),_v(" "),_m(12)])} +with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"fixed":""}},[_c('navbar',{attrs:{"type":"dark"},scopedSlots:_u([{key:"brand",fn:function(){return [_c('a',{staticClass:"navbar-brand",attrs:{"href":"/index.html","title":"Home"}},[_c('img',{attrs:{"width":"30px","src":"/favicon.ico"}})])]},proxy:true},{key:"right",fn:function(){return [_c('li',[_c('form',{staticClass:"navbar-form"},[_c('searchbar',{attrs:{"data":searchData,"placeholder":"Search","on-hit":searchCallback,"menu-align-right":""}})],1)])]},proxy:true}])},[_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/index.html"}},[_v("HOME")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/showcase.html"}},[_v("SHOWCASE")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/ug/index.html"}},[_v("USER GUIDE")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/dg/index.html"}},[_v("DEVELOPER GUIDE")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/about.html"}},[_v("ABOUT")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/contact.html"}},[_v("CONTACT")])]),_v(" "),_c('li',{attrs:{"tags":"dev"}},[_c('a',{staticClass:"nav-link",attrs:{"href":"https://reposense.org","target":"_blank"}},[_c('span',[_c('span',{staticClass:"fas fa-external-link-alt",attrs:{"aria-hidden":"true"}}),_v(" PRODUCTION SITE")])])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"https://github.com/RepoSense/reposense","target":"_blank"}},[_c('span',[_c('span',{staticClass:"fab fa-github",attrs:{"aria-hidden":"true"}})])])])]),_v(" "),_m(0)],1),_v(" "),_c('div',{attrs:{"id":"flex-body"}},[_c('overlay-source',{staticClass:"fixed-header-padding",attrs:{"id":"site-nav","tag-name":"nav","to":"site-nav"}},[_c('div',{staticClass:"site-nav-top"},[_c('div',{staticClass:"font-weight-bold mb-2",staticStyle:{"font-size":"1.25rem"}},[_c('span',[_c('strong',[_c('strong',[_v("USER GUIDE")])])])])]),_v(" "),_c('div',{staticClass:"nav-component slim-scroll"},[_c('div',[_c('site-nav',[_c('overlay-source',{staticClass:"site-nav-list site-nav-list-root",attrs:{"tag-name":"ul","to":"mb-site-nav"}},[_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/index.html"}},[_c('strong',[_v("Overview")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/generatingReports.html"}},[_c('strong',[_v("Generating reports")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/usingReports.html"}},[_c('strong',[_v("Using reports")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/customizingReports.html"}},[_c('strong',[_v("Customizing reports")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/sharingReports.html"}},[_c('strong',[_v("Sharing reports")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('strong',[_v("Appendices")]),_v(" "),_c('div',{staticClass:"site-nav-dropdown-btn-container"},[_c('i',{staticClass:"site-nav-dropdown-btn-icon site-nav-rotate-icon",attrs:{"onclick":"handleSiteNavClick(this.parentNode.parentNode, false); event.stopPropagation();"}},[_c('span',{staticClass:"glyphicon glyphicon-menu-down",attrs:{"aria-hidden":"true"}})])])]),_c('ul',{staticClass:"site-nav-dropdown-container site-nav-dropdown-container-open site-nav-list"},[_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/cli.html"}},[_v("CLI syntax reference")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/configFiles.html"}},[_v("Config files format")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/authorConfigSyntax.html"}},[_v("Advanced syntax: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/usingAuthorTags.html"}},[_v("Using "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("@@author")]),_v(" tags")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/withNetlify.html"}},[_v("RepoSense with Netlify")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/withGithubActions.html"}},[_v("RepoSense with GitHub Actions")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/withTravis.html"}},[_v("RepoSense with Travis")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/runSh.html"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("run.sh")]),_v(" format")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/faq.html"}},[_v("FAQ")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/troubleshooting.html"}},[_v("Troubleshooting")])])])])])])],1)],1)])]),_v(" "),_c('div',{staticClass:"fixed-header-padding",attrs:{"id":"content-wrapper"}},[_m(1),_v(" "),_c('div',{attrs:{"id":"section-setting-up"}},[_m(2),_v(" "),_m(3),_v(" "),_c('div',[_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("The instructions below assume you are using GitHub pages to host your report.")])]),_v(" "),_m(4)],1),_v(" "),_m(5),_v(" "),_m(6),_v(" "),_m(7),_v(" "),_c('div',[_m(8),_v(" "),_c('div',{staticClass:"indented-level0"},[_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('span',[_c('span',{staticClass:"glyphicon glyphicon-log-in",attrs:{"aria-hidden":"true"}})]),_v(" Appendix: "),_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("run.sh")]),_v(" format")])])]},proxy:true}])},[_v(" "),_c('div',[_c('h1',{staticClass:"display-4",attrs:{"id":"appendix-run-sh-format"}},[_c('span',[_v("Appendix: run.sh format")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#appendix-run-sh-format","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{staticClass:"lead"},[_c('p',[_c('a',{attrs:{"href":"https://github.com/reposense/publish-RepoSense/blob/master/run.sh"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("run.sh")])]),_v(" is a script used for automating RepoSense report generation.")])]),_v(" "),_c('h3',{attrs:{"id":"customizing-the-reposense-command"}},[_v("Customizing the RepoSense command"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#customizing-the-reposense-command","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("You can update the RepoSense command (i.e., the last line) in the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("run.sh")]),_v(" to match your needs.")]),_v(" "),_c('div',{staticClass:"indented-level0"},[_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('span',[_c('span',{staticClass:"glyphicon glyphicon-log-in",attrs:{"aria-hidden":"true"}})]),_v(" Appendix: "),_c('strong',[_v("CLI syntax reference")])])]},proxy:true}])},[_v(" "),_c('div',[_c('h1',{staticClass:"display-4",attrs:{"id":"appendix-cli-syntax-reference"}},[_c('span',[_v("Appendix: CLI syntax reference")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#appendix-cli-syntax-reference","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{staticClass:"lead"},[_c('p',[_v("The command "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar")]),_v(" takes several flags.")])]),_v(" "),_c('box',[_c('p',[_c('strong',[_v("Examples")]),_v(":")]),_v(" "),_c('p',[_v("An example of a command using most parameters:"),_c('br'),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar --repos https://github.com/reposense/RepoSense.git --output ./report_folder --since 31/1/2017 --until 31/12/2018 --formats java adoc xml --view --ignore-standalone-config --last-modified-date --timezone UTC+08 --find-previous-authors --analyze-authorship --originality-threshold 0.66")])]),_v(" "),_c('p',[_v("Same command as above but using most parameters in alias format:"),_c('br'),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar -r https://github.com/reposense/RepoSense.git -o ./report_folder -s 31/1/2017 -u 31/12/2018 -f java adoc xml -v -i -l -t UTC+08 -F -A -ot 0.66")])])]),_v(" "),_c('p',[_v("The section below provides explanations for each of the flags.")]),_v(" "),_c('h3',{attrs:{"id":"analyze-authorship-a"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--analyze-authorship")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-A")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#analyze-authorship-a","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--analyze-authorship")])]),_v(": Performs further analysis to distinguish between partial and full credit attribution for\nlines of code assigned to the author.")]),_v(" "),_c('ul',[_c('li',[_v("Default: this feature is turned "),_c('em',[_c('strong',[_v("off")])]),_v(" by default and the author will receive partial credits for all lines of\ncode, as the code lines are at least partial credit but may not qualify for full credit.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-A")]),_v(" (upper case)")]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--analyze-authorship")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-A")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("A darker background colour represents full credit, while a lighter background colour represents partial credit.")]),_v(" "),_c('p',[_v("If the code is attributed to a different author by the user via "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("@@author")]),_v(" tag, then the new author will be given\npartial credit.")])]),_v(" "),_c('h3',{attrs:{"id":"assets-a"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--assets")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-a")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#assets-a","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{attrs:{"id":"section-assets"}},[_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--assets ASSETS_DIRECTORY")])]),_v(": Specifies where to place assets for report generation.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ASSETS_DIRECTORY")]),_v(" The directory containing the assets files. A "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("favicon.ico")]),_v(" file can be placed here to customize the favicon of the dashboard, while a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("title.md")]),_v(" file can be placed to customize the "),_c('a',{attrs:{"href":"https://reposense.org/ug/customizingReports.html#add-a-title"}},[_v("title")]),_v(" of the report using "),_c('a',{attrs:{"href":"https://www.markdownguide.org/basic-syntax/"}},[_v("Markdown syntax")]),_v(".")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-a")])]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--assets ./assets")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-a ./assets")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("If "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--assets")]),_v(" is not specified, RepoSense looks for assets in the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./assets")]),_v(" directory.")])])])],1),_v(" "),_c('h3',{attrs:{"id":"config-c"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--config")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-c")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#config-c","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{attrs:{"id":"section-config"}},[_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--config CONFIG_DIRECTORY")])]),_v(": Specifies that config files located in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("CONFIG_DIRECTORY")]),_v(" should be used to customize the report.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("CONFIG_DIRECTORY")]),_v(" The directory containing the config files. Should contain a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(" file. Optionally, can contain an "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(" file or/and a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("group-config.csv")]),_v(" file or/and a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("report-config.json")]),_v(" file or/and a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("blurbs.md")]),_v(" file.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-c")])]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar --config ./config")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("Cannot be used with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repos")]),_v(". The "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repos")]),_v(" flag will take precedence over this flag.")]),_v(" "),_c('li',[_v("If both "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repos")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--config")]),_v(" are not specified, RepoSense looks for config files in the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./config")]),_v(" directory.")]),_v(" "),_c('li',[_v("Config files must follow "),_c('a',{attrs:{"href":"/RepoSense/ug/configFiles.html"}},[_v("this")]),_v(" format.")])])])],1),_v(" "),_c('h3',{attrs:{"id":"formats-f"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--formats")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-f")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#formats-f","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--formats LIST_OF_FORMATS")])]),_v(": Specifies which file extensions to be included in the analysis.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("LIST_OF_FORMATS")]),_v(" A space-separated list of file extensions that should be included in the analysis."),_c('br'),_v("\nDefault: all file formats")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-f")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--formats css fxml gradle")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-f css fxml gradle")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Binary file formats, such as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("jpg")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("png")]),_v(","),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("exe")]),_v(","),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("zip")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("rar")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("docx")]),_v(", and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("pptx")]),_v(", all will be labelled as the file type "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("binary")]),_v(" in the generated report.")])]),_v(" "),_c('h3',{attrs:{"id":"find-previous-authors-f"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--find-previous-authors")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-F")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#find-previous-authors-f","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--find-previous-authors")])]),_v(": Utilizes Git blame's ignore revisions functionality, RepoSense will attempt to blame the line changes caused by commits in the ignore commit list to the previous authors who altered those lines (if available).")]),_v(" "),_c('ul',[_c('li',[_v("Default: RepoSense will assume that no authors are responsible for the code changes in the lines altered by commits in the ignore commit list.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-F")]),_v(" (uppercase F)")]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--find-previous-authors")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-F")])])]),_v(" "),_c('h3',{attrs:{"id":"help-h"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--help")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-h")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#help-h","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--help")])]),_v(": Shows the help message.")]),_v(" "),_c('ul',[_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-h")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Cannot be used with any other flags. This flag takes precedence over all other flags.")])]),_v(" "),_c('h3',{attrs:{"id":"ignore-standalone-config-i"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--ignore-standalone-config")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-i")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#ignore-standalone-config-i","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--ignore-standalone-config")])]),_v(": Specifies that the standalone config file in the repo should be ignored.")]),_v(" "),_c('ul',[_c('li',[_v("Default: the standalone config file is not ignored")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-i")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--ignore-standalone-config")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-i")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("This flag overrides the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Ignore standalone config")]),_v(" field in the CSV config file.")])]),_v(" "),_c('h3',{attrs:{"id":"ignore-filesize-limit-i"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--ignore-filesize-limit")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-I")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#ignore-filesize-limit-i","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--ignore-filesize-limit")])]),_v(": Specifies that the file size limit (both default and user-defined) should be ignored during the analysis.")]),_v(" "),_c('ul',[_c('li',[_v("Default: the file size limit is not ignored")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-I")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--ignore-filesize-limit")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-I")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("All files are subject to a default file size limit or a custom size limit set by the user. Most files should not be\naffected by the default size limit. This flag can be useful for including files in your report that are affected by\nthe size limit. Note that this flag may result in large report sizes and/or slower report generation.")])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("This flag overrides the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Ignore file size limit")]),_v(" field in the CSV config file.")])]),_v(" "),_c('h3',{attrs:{"id":"last-modified-date-l"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--last-modified-date")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-l")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#last-modified-date-l","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--last-modified-date")])]),_v(": Specifies that the last modified date of each line of code should be added to "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("authorship.json")]),_v(".")]),_v(" "),_c('ul',[_c('li',[_v("Default: the last modified date of each line of code will not be added to "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("authorship.json")])]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-l")]),_v(" (lowercase L)")]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--last-modified-date")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-l")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("Cannot be used with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--shallow-cloning")]),_v(". This may result in an incorrect last modified date.")]),_v(" "),_c('li',[_v("The last modified dates will be in the same timezone specified with the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--timezone")]),_v(" flag.")])])]),_v(" "),_c('h3',{attrs:{"id":"originality-threshold-ot"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--originality-threshold")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-ot")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#originality-threshold-ot","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--originality-threshold [VALUE]")])]),_v(": Specifies the cut-off point for partial and full credit\nin "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--analyze-authorship")]),_v(". Author will be given full credit if their contribution exceeds this threshold, else partial\ncredit is given.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("VALUE")]),_v(" Optional. Acceptable range: [0.0, 1.0]."),_c('br'),_v("\nDefault: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("0.51")])]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-ot")])]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--originality-threshold 0.66")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-ot 0.66")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("Requires "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--analyze-authorship")]),_v(" flag.")]),_v(" "),_c('li',[_v("An author's contribution, or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("originality score")]),_v(", is calculated using Levenshtein Distance (Edit Distance) algorithm.\nWe compare the difference between current code line and its previous versions.")])])]),_v(" "),_c('h3',{attrs:{"id":"output-o"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--output")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-o")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#output-o","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--output OUTPUT_DIRECTORY")])]),_v(": Indicates where to save the report generated.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("OUTPUT_DIRECTORY")]),_v(" The location for the generated "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("reposense-report")]),_v(" folder."),_c('br'),_v("\nDefault: current directory")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-o")])]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--output ./foo")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-o ./foo")]),_v(" (the report will be in the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./foo/reposense-report")]),_v(" folder)")])]),_v(" "),_c('h3',{attrs:{"id":"period-p"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--period")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-p")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#period-p","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--period PERIOD")])]),_v(": Specifies the period of analysis window.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("PERIOD")]),_v(" The period of analysis window, in the format "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("nd")]),_v(" (for n days) or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("nw")]),_v(" (for n weeks). It is used to calculate end date if only start date is specified, or calculate end date if only start date is specified.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-p")])]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--period 30d")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--period 4w")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("If both start date and end date are not specified, the date of generating the report will be taken as the end date.")]),_v(" "),_c('li',[_v("May analyze the incorrect date range if used with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since d1")]),_v(". The program will throw a warning.")]),_v(" "),_c('li',[_v("Cannot be used with both "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--until")]),_v(". The program will throw an exception.")])])]),_v(" "),_c('h3',{attrs:{"id":"repo-repos-r"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repo")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repos")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-r")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#repo-repos-r","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repo REPO_LOCATION")])]),_v(": Specifies which repositories to analyze.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("REPO_LOCATION")]),_v(" A list of URLs or the disk location of the git repositories to analyze, separated by spaces.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-r")])]),_v(" "),_c('li',[_v("Examples:\n"),_c('ul',[_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repos https://github.com/reposense/RepoSense.git")])]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repo https://github.com/reposense/RepoSense.git c:/myRepose/foo/bar")]),_v(": analyzes the two specified repos (one remote, one local) and generates one report containing details of both.")])])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Cannot be used with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--config")]),_v(". This flag takes precedence over "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--config")]),_v(".")])]),_v(" "),_c('h3',{attrs:{"id":"shallow-cloning-s"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--shallow-cloning")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-S")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#shallow-cloning-s","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--shallow-cloning")])]),_v(": Clones repositories using Git's shallow cloning functionality, which can significantly reduce the time taken to clone large repositories. However, the flag should not be used for smaller repositories where the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(".git")]),_v(" file is smaller than 500 MB, as it would create overhead.")]),_v(" "),_c('ul',[_c('li',[_v("Default: RepoSense does not clone repositories using Git's shallow cloning functionality.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-S")]),_v(" (uppercase S)")]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--shallow-cloning")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-S")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Cannot be used with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--last-modified-date")]),_v(". This may result in an incorrect last modified date.")])]),_v(" "),_c('h3',{attrs:{"id":"since-s"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-s")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#since-s","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since START_DATE")])]),_v(": Specifies the start date for the period to be analyzed.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("START_DATE")]),_v(" The first day of the period to be analyzed, in the format "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("DD/MM/YYYY")]),_v("."),_c('br'),_v("\nDefault: one month before the current date")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-s")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since 21/10/2017")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-s 21/10/2017")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("If the start date is not specified, only commits made one month before the end date (if specified) or the date of generating the report, will be captured and analyzed.")]),_v(" "),_c('li',[_v("If "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("d1")]),_v(" is specified as the start date ("),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since d1")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-s d1")]),_v("), then the program will search for the earliest commit date of all repositories and use that as the start date.")]),_v(" "),_c('li',[_v("If "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("d1")]),_v(" is specified together with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--period")]),_v(", then the program will warn that the date range being analyzed may be incorrect.")])])]),_v(" "),_c('h3',{attrs:{"id":"timezone-t"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--timezone")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-t")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#timezone-t","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--timezone ZONE_ID")])]),_v(": Indicates the timezone to be used for the analysis.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ZONE_ID")]),_v(" The timezone in the format "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ZONE_ID[±hh[mm]]")]),_v("."),_c('br'),_v("\nDefault: system's default timezone")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-t")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--timezone UTC+08")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-t UTC-1030")])])]),_v(" "),_c('h3',{attrs:{"id":"until-u"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--until")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-u")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#until-u","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--until END_DATE")])]),_v(": Specifies the end date of the analysis period.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("END_DATE")]),_v(" The last date of the period to be analyzed, in the format "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("DD/MM/YYYY")]),_v("."),_c('br'),_v("\nDefault: current date")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-u")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--until 21/10/2017")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-u 21/10/2017")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Note: If the end date is not specified, the date of generating the report will be taken as the end date.")])]),_v(" "),_c('h3',{attrs:{"id":"version-v"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--version")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-V")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#version-v","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--version")])]),_v(": Shows the version of RepoSense.")]),_v(" "),_c('ul',[_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-V")]),_v(" (upper case)")])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Cannot be used with any other flags. This flag takes precedence over all other flags other than "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--help")]),_v(".")])]),_v(" "),_c('h3',{attrs:{"id":"view-v"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--view")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-v")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#view-v","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--view [REPORT_FOLDER]")])]),_v(": Specifies that the report should be opened in the default browser.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("REPORT_FOLDER")]),_v(" Optional. If specified, no analysis will be performed and the report specified by the argument will be opened."),_c('br'),_v("\nDefault: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./reposense-report")])]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-v")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--view")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-v")])])])],1)])],1),_v(" "),_c('p'),_v(" "),_c('h3',{attrs:{"id":"specifying-which-version-of-reposense-to-use"}},[_v("Specifying which version of RepoSense to use"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#specifying-which-version-of-reposense-to-use","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Depending on which version you wish to use for report generation, add one of the following flags to the line "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./get-reposense.py")]),_v(" in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("run.sh")]),_v(" (e.g., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./get-reposense.py --release")]),_v("):")]),_v(" "),_c('ul',[_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--release")]),_v(": Use the latest release (Stable)")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--master")]),_v(": Use the latest version of the master branch")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--tag TAG")]),_v(" (e.g. "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--tag v1.6.1")]),_v("): Use the version identified by the Git tag given")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--commit COMMIT")]),_v(" (e.g. "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--commit abc123")]),_v("): Use the version identified by the Git commit SHA given")])])])])],1),_v(" "),_c('p'),_v(" "),_c('div',{staticClass:"indented-level0"},[_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('span',[_c('span',{staticClass:"glyphicon glyphicon-log-in",attrs:{"aria-hidden":"true"}})]),_v(" Appendix: "),_c('strong',[_v("Config files format")])])]},proxy:true}])},[_v(" "),_c('div',[_c('h1',{staticClass:"display-4",attrs:{"id":"appendix-config-files-format"}},[_c('span',[_v("Appendix: Config files format")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#appendix-config-files-format","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{staticClass:"lead"},[_c('p',[_v("Given below are the details of the various config files used by RepoSense.")])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_c('strong',[_v("RepoSense ignores the order of column headers in the CSV config files. However, the spelling of the column headers must match the specified headers exactly, or the column would be ignored by RepoSense.")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_c('strong',[_v("A value in a config file is optional to provide unless it is specified as "),_c('span',{staticClass:"badge bg-danger"},[_v("mandatory")])]),_v(".")])]),_v(" "),_c('h2',{attrs:{"id":"repo-config-csv"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#repo-config-csv","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(" file contains repo-level config data.")]),_v(" Each row represents a repository's configuration ("),_c('a',{attrs:{"href":"/RepoSense/ug/repo-config.csv"}},[_v("example")]),_v(").")]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Column Name")]),_v(" "),_c('th',[_v("Explanation")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_v("Repository's Location "),_c('span',{staticClass:"badge bg-danger"},[_v("mandatory")])]),_v(" "),_c('td',[_v("The "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Remote Repo URL")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Disk Path")]),_v(" to the git repository e.g., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://github.com/foo/bar.git")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("C:\\Users\\user\\Desktop\\GitHub\\foo\\bar")])])]),_v(" "),_c('tr',[_c('td',[_v("Branch")]),_v(" "),_c('td',[_v("The branch to analyze in the target repository e.g., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("master")]),_v(". Default: the default branch of the repo")])]),_v(" "),_c('tr',[_c('td',[_v("File formats"),_c('sup',[_v("*+")])]),_v(" "),_c('td',[_v("The file extensions to analyze. Binary file formats, such as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("png")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("jpg")]),_v(", will be automatically labelled as the file type "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("binary")]),_v(" in the generated report. Default: all file formats")])]),_v(" "),_c('tr',[_c('td',[_v("Find Previous Authors")]),_v(" "),_c('td',[_v("Enter "),_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("yes")])]),_v(" to utilize Git blame's ignore revisions functionality, RepoSense will attempt to blame the line changes caused by commits in the ignore commit list to the previous authors who altered those lines (if available).")])]),_v(" "),_c('tr',[_c('td',[_v("Ignore Glob List"),_c('sup',[_v("*+")])]),_v(" "),_c('td',[_v("The list of file path globs to ignore during analysis for each author e.g., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("test/**;temp/**")]),_v(". Refer to the "),_c('a',{attrs:{"href":"https://docs.oracle.com/javase/tutorial/essential/io/fileOps.html#glob"}},[_c('em',[_v("glob format")])]),_v(" for the path glob syntax.")])]),_v(" "),_c('tr',[_c('td',[_v("Ignore standalone config")]),_v(" "),_c('td',[_v("To ignore the standalone config file (if any) in target repository, enter "),_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("yes")])]),_v(". If the cell is empty, the standalone config file in the repo (if any) will take precedence over configurations provided in the csv files.")])]),_v(" "),_c('tr',[_c('td',[_v("Ignore Commits List"),_c('sup',[_v("*+")])]),_v(" "),_c('td',[_v("The list of commits to ignore during analysis. For accurate results, the commits should be provided with their full hash. Additionally, a range of commits can be specified using the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("..")]),_v(" notation e.g. "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("abc123..def456")]),_v(" (both inclusive).")])]),_v(" "),_c('tr',[_c('td',[_v("Ignore Authors List"),_c('sup',[_v("*+")])]),_v(" "),_c('td',[_v("The list of authors to ignore during analysis. Authors should be specified by their "),_c('a',{attrs:{"href":"#a-note-about-git-author-name"}},[_v("Git Author Name")]),_v(".")])]),_v(" "),_c('tr',[_c('td',[_v("Shallow Cloning")]),_v(" "),_c('td',[_v("Enter "),_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("yes")])]),_v(" to clone the repository using Git's shallow cloning functionality. This option can significantly reduce the time taken to clone large repositories. However, the option should ideally be disabled for smaller repositories where the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(".git")]),_v(" file is smaller than 500 MB, as it would create overhead.")])]),_v(" "),_c('tr',[_c('td',[_v("File Size Limit"),_c('sup',[_v("+")])]),_v(" "),_c('td',[_v("Enter a file size limit for the repository in bytes as a single number without units (for a size limit of 1MB for example, enter 1000000). This file size limit will override the default file size limit (500KB). Files exceeding the file size limit will be marked as ignored and only the file name and line count will be reflected in the report.")])]),_v(" "),_c('tr',[_c('td',[_v("Ignore File Size Limit")]),_v(" "),_c('td',[_v("Enter "),_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("yes")])]),_v(" to ignore both the default file size limit and the file size limit possibly set by the user in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(".")])]),_v(" "),_c('tr',[_c('td',[_v("Skip Ignored File Analysis")]),_v(" "),_c('td',[_v("Enter "),_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("yes")])]),_v(" to ignore analysis of files exceeding the file size limit entirely. If file analysis is skipped, all information about the file will be omitted from the generated report. This option can significantly improve report generation time.")])])])])]),_c('box',{attrs:{"type":"info","seamless":""}},[_v("\nThe Shallow Cloning option is incompatible with the \"--last-modified-date\" CLI flag.\n")]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_v("\nIf Ignore File Size Limit is yes, the File Size Limit and Skip Ignored File Analysis columns are ignored.\n")]),_v(" "),_c('p',[_c('sup',[_v("* "),_c('strong',[_v("Multi-value column")]),_v(": multiple values can be entered in this column using a semicolon "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(";")]),_v(" as the separator.")]),_c('br'),_v(" "),_c('sup',[_v("+ "),_c('strong',[_v("Overrideable column")]),_v(": prepend with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("override:")]),_v(" to use entered value(s) instead of value(s) from standalone config.")])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("When using "),_c('a',{attrs:{"href":"#config-json-standalone-config-file"}},[_v("standalone config")]),_v(" (if it is not ignored), it is possible to override specific values from the standalone config by prepending the entered value with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("override:")]),_v(".")])]),_v(" "),_c('h2',{attrs:{"id":"author-config-csv"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#author-config-csv","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Optionally, you can use an "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(" (which should be in the same directory as the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(" file) to provide more details about the authors to analyze ("),_c('a',{attrs:{"href":"/RepoSense/ug/author-config.csv"}},[_v("example")]),_v("). It should contain the following columns:")]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Column Name")]),_v(" "),_c('th',[_v("Explanation")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_v("Repository's Location"),_c('sup',[_v("*")])]),_v(" "),_c('td',[_v("Same as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(". Default: all the repos in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(".")])]),_v(" "),_c('tr',[_c('td',[_v("Branch")]),_v(" "),_c('td',[_v("The branch to analyze for this author, e.g., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("master")]),_v(". Default: the author will be bound to all the repos in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(" that has the same repo's location, regardless of branch.")])]),_v(" "),_c('tr',[_c('td',[_v("Author's Git Host ID"),_c('sup',[_v("#")]),_v(" "),_c('span',{staticClass:"badge bg-danger"},[_v("mandatory")])]),_v(" "),_c('td',[_v("Username of the target author's profile on GitHub, GitLab or Bitbucket, e.g."),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("JohnDoe")]),_v(".")])]),_v(" "),_c('tr',[_c('td',[_v("Author's Emails"),_c('sup',[_v("*")])]),_v(" "),_c('td',[_v("Associated emails of the author. For GitHub users, this can be found in your "),_c('a',{attrs:{"href":"https://github.com/settings/emails"}},[_v("GitHub settings")]),_v(".")])]),_v(" "),_c('tr',[_c('td',[_v("Author's Display Name")]),_v(" "),_c('td',[_v("The name to display for the author. Default: author's username.")])]),_v(" "),_c('tr',[_c('td',[_v("Author's Git Author Name"),_c('sup',[_v("*")])]),_v(" "),_c('td',[_v("The meaning of "),_c('em',[_v("Git Author Name")]),_v(" is explained in "),_c('a',{attrs:{"href":"#a-note-about-git-author-name"}},[_c('em',[_v("A note about git author name")])]),_v(".")])]),_v(" "),_c('tr',[_c('td',[_v("Ignore Glob List"),_c('sup',[_v("*")])]),_v(" "),_c('td',[_v("Files to ignore for this author, in addition to files ignored by the patterns specified in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(". The path glob syntax is the same as that of Ignore Glob List in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(".")])])])])]),_c('p',[_c('sup',[_v("* "),_c('strong',[_v("Multi-value column")]),_v(": multiple values can be entered in this column using a semicolon "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(";")]),_v(" as the separator.")]),_v(" "),_c('br'),_v(" "),_c('sup',[_v("# For backward compatibility, "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Author's GitHub ID")]),_v(" is still accepted as the header in place of "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Author's Git Host ID")]),_v(".")])]),_v(" "),_c('p',[_v("If "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(" is not given and the repo has not provided author details in a standalone config file, all the authors of the repositories within the date range specified (if any) will be analyzed.")]),_v(" "),_c('p',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(" has some advanced syntax that can help to reduce duplication of the author's information. The syntax guide is given below:")]),_v(" "),_c('div',{staticClass:"indented-level0"},[_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('span',[_c('span',{staticClass:"glyphicon glyphicon-log-in",attrs:{"aria-hidden":"true"}})]),_v(" Appendix: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(" advanced syntax")])]},proxy:true}])},[_v(" "),_c('div',[_c('h1',{staticClass:"display-4",attrs:{"id":"appendix-author-config-csv-advanced-syntax"}},[_c('span',[_v("Appendix: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(" advanced syntax")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#appendix-author-config-csv-advanced-syntax","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{staticClass:"lead"},[_c('p',[_v("Given below are the advanced syntax available for "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(".")])]),_v(" "),_c('h2',{attrs:{"id":"multiple-repository-s-location-per-author"}},[_v("Multiple "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repository's Location")]),_v(" per author"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#multiple-repository-s-location-per-author","onclick":"event.stopPropagation()"}})]),_v(" "),_c('h4',{attrs:{"id":"specifying-multiple-repository-s-location"}},[_v("Specifying multiple "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repository's Location")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#specifying-multiple-repository-s-location","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("To specify multiple "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repository's Location")]),_v(" in a single row, we can use a semicolon "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(";")]),_v(" as a separator.")]),_v(" "),_c('p',[_v("Below is an example:")]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Repository's Location")]),_v(" "),_c('th',[_v("Branch")]),_v(" "),_c('th',[_v("Author's Git Host ID")]),_v(" "),_c('th',[_v("... Hidden columns")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://github.com/reposense/RepoSense.git;https://github.com/MarkBind/markbind.git")])]),_v(" "),_c('td',[_v("master")]),_v(" "),_c('td',[_v("sikai00")]),_v(" "),_c('td',[_v("--")])])])])]),_c('p',[_v("We have now furnished author details for both repositories in a single row, instead of having two individual rows per "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repository's Location")]),_v(".")]),_v(" "),_c('br'),_v(" "),_c('h4',{attrs:{"id":"specifying-repository-s-location-with-one-or-more-specific-branches"}},[_v("Specifying "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repository's Location")]),_v(" with one or more specific branches"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#specifying-repository-s-location-with-one-or-more-specific-branches","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("To list out one or more branches for a particular "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repository's Location")]),_v(", we can use a pipe "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("|")]),_v(" separator to demarcate the different branches.")]),_v(" "),_c('p',[_v("Below is an example:")]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Repository's Location")]),_v(" "),_c('th',[_v("Branch")]),_v(" "),_c('th',[_v("Author's Git Host ID")]),_v(" "),_c('th',[_v("... Hidden columns")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://github.com/reposense/RepoSense.git~master|release|cypress")])]),_v(" "),_c('td',[_v("master")]),_v(" "),_c('td',[_v("sikai00")]),_v(" "),_c('td',[_v("--")])])])])]),_c('p',[_v("We have now provided author details for three different branches in a single repo, using a single row.")]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("The branch specified through the delimiter syntax will take precedence over the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Branch")]),_v(" column.")])]),_v(" "),_c('h2',{attrs:{"id":"using-github-branch-url-as-repository-s-location"}},[_v("Using GitHub branch URL as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repository's Location")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#using-github-branch-url-as-repository-s-location","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("We can also use GitHub branch URL as copied from the address bar directly, to be able to quickly use the URL to specify the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repository's Location")]),_v(" and a specific "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Branch")]),_v(" at the same time.")]),_v(" "),_c('p',[_v("Below is an example:")]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Repository's Location")]),_v(" "),_c('th',[_v("Branch")]),_v(" "),_c('th',[_v("Author's Git Host ID")]),_v(" "),_c('th',[_v("... Hidden columns")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://github.com/reposense/RepoSense/tree/release")])]),_v(" "),_c('td'),_v(" "),_c('td',[_v("sikai00")]),_v(" "),_c('td',[_v("--")])])])])]),_c('p',[_v("There is no need to specify the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Branch")]),_v(" column now, as we have specified it through the GitHub branch URL.")]),_v(" "),_c('box',{attrs:{"type":"warning","seamless":""}},[_c('p',[_v("GitLab and BitBucket branch URL are not supported at the moment.")])]),_v(" "),_c('h2',{attrs:{"id":"combining-the-advanced-syntax"}},[_v("Combining the advanced syntax"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#combining-the-advanced-syntax","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("It is possible to combine the above-mentioned advanced syntax. By doing so, we can go from:")]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Repository's Location")]),_v(" "),_c('th',[_v("Branch")]),_v(" "),_c('th',[_v("Author's Git Host ID")]),_v(" "),_c('th',[_v("... Hidden columns")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://github.com/MarkBind/markbind/tree/vue3-migration")])]),_v(" "),_c('td'),_v(" "),_c('td',[_v("sikai00")]),_v(" "),_c('td',[_v("--")])]),_v(" "),_c('tr',[_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://github.com/reposense/RepoSense.git")])]),_v(" "),_c('td',[_v("master")]),_v(" "),_c('td',[_v("sikai00")]),_v(" "),_c('td',[_v("--")])]),_v(" "),_c('tr',[_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://github.com/reposense/RepoSense.git")])]),_v(" "),_c('td',[_v("cypress")]),_v(" "),_c('td',[_v("sikai00")]),_v(" "),_c('td',[_v("--")])])])])]),_c('p',[_v("to:")]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Repository's Location")]),_v(" "),_c('th',[_v("Branch")]),_v(" "),_c('th',[_v("Author's Git Host ID")]),_v(" "),_c('th',[_v("... Hidden columns")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://github.com/MarkBind/markbind/tree/vue3-migration;https://github.com/reposense/RepoSense.git~master|cypress")])]),_v(" "),_c('td'),_v(" "),_c('td',[_v("sikai00")]),_v(" "),_c('td',[_v("--")])])])])]),_c('br')],1)])],1),_v(" "),_c('p'),_v(" "),_c('h2',{attrs:{"id":"group-config-csv"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("group-config.csv")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#group-config-csv","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Optionally, you can provide a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("group-config.csv")]),_v("(which should be in the same directory as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(" file) to provide details on any custom groupings for files in specified repositories ("),_c('a',{attrs:{"href":"/RepoSense/ug/group-config.csv"}},[_v("example")]),_v("). It should contain the following columns:")]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Column Name")]),_v(" "),_c('th',[_v("Explanation")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_v("Repository's Location")]),_v(" "),_c('td',[_v("Same as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(". Default: all the repos in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")])])]),_v(" "),_c('tr',[_c('td',[_v("Group Name "),_c('span',{staticClass:"badge bg-danger"},[_v("mandatory")])]),_v(" "),_c('td',[_v("Name of the group, e.g.,"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("test")]),_v(".")])]),_v(" "),_c('tr',[_c('td',[_v("Globs * "),_c('span',{staticClass:"badge bg-danger"},[_v("mandatory")])]),_v(" "),_c('td',[_v("The list of file path globs to include for specified group, e.g.,"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("**/test/*;**.java")]),_v(".")])])])])]),_c('p',[_c('sup',[_v("* "),_c('strong',[_v("Multi-value column")]),_v(": multiple values can be entered in this column using a semicolon "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(";")]),_v(" as the separator.")])]),_v(" "),_c('p',[_v("Note that a file in a given repository should only be tagged to one group. "),_c('br'),_v("\ne.g.: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("example.java")]),_v(" in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("example-repo")]),_v(" can either be in the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("test")]),_v(" group or the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("code")]),_v(" group, but not in both "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("test")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("code")]),_v(" group. If multiple groups are specified for a given file, the latter group (i.e., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("code")]),_v(" group) is set for the file.")]),_v(" "),_c('h2',{attrs:{"id":"report-config-json"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("report-config.json")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#report-config-json","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("You can optionally use "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("report-config.json")]),_v(" to customize report generation by providing the following information. ("),_c('a',{attrs:{"href":"/RepoSense/ug/report-config.json"}},[_v("example")]),_v(")")]),_v(" "),_c('p',[_c('strong',[_v("Fields to provide")]),_v(":")]),_v(" "),_c('ul',[_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("title")]),_v(": Title of the generated report, which is also the title of the deployed dashboard. Default: \"RepoSense Report\"")])]),_v(" "),_c('div',{attrs:{"id":"section-standalone"}},[_c('h2',{attrs:{"id":"config-json-standalone-config-file"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("config.json")]),_v(" (standalone config file)"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#config-json-standalone-config-file","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Repo owners can provide the following additional information to RepoSense using a config file that we call the "),_c('strong',[_c('em',[_v("standalone config file")])]),_v(":")]),_v(" "),_c('ul',[_c('li',[_v("which files/authors/commits to analyze/omit")]),_v(" "),_c('li',[_v("which git and git host usernames belong to which authors")]),_v(" "),_c('li',[_v("the display of an author")])]),_v(" "),_c('p',[_v("To use this feature, add a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("_reposense/config.json")]),_v(" to the root of your repo using the format in the example below ("),_c('a',{attrs:{"href":"https://github.com/reposense/RepoSense/blob/master/_reposense/config.json"}},[_v("another example")]),_v(") and "),_c('strong',[_v("commit it")]),_v(" (reason: RepoSense can see committed code only):")]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"no-line-numbers hljs json"}},[_c('span',[_v("{\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"ignoreGlobList\"")]),_v(": ["),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"about-us/**\"")]),_v(", "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"**index.html\"")]),_v("],\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"formats\"")]),_v(": ["),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"html\"")]),_v(", "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"css\"")]),_v("],\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"ignoreCommitList\"")]),_v(": ["),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"90018e49f129ce7e0abdc8b18e91c9813588c601\"")]),_v(", "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"67890def\"")]),_v(", "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"abc123..def456\"")]),_v("],\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"ignoreAuthorList\"")]),_v(": ["),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"charlie\"")]),_v("],\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"authors\"")]),_v(":\n")]),_c('span',[_v(" [\n")]),_c('span',[_v(" {\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"gitId\"")]),_v(": "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"alice\"")]),_v(",\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"emails\"")]),_v(": ["),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"alice@example.com\"")]),_v(", "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"alicet@example.com\"")]),_v("],\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"displayName\"")]),_v(": "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"Alice T.\"")]),_v(",\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"authorNames\"")]),_v(": ["),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"AT\"")]),_v(", "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"A\"")]),_v("],\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"ignoreGlobList\"")]),_v(": ["),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"**.css\"")]),_v("]\n")]),_c('span',[_v(" },\n")]),_c('span',[_v(" {\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"gitId\"")]),_v(": "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"bob\"")]),_v("\n")]),_c('span',[_v(" }\n")]),_c('span',[_v(" ]\n")]),_c('span',[_v("}\n")])])]),_c('p',[_v("Note: all fields are optional unless specified otherwise.")]),_v(" "),_c('p',[_c('strong',[_v("Fields to provide "),_c('em',[_v("repository-level")]),_v(" info")]),_v(":")]),_v(" "),_c('ul',[_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ignoreGlobList")]),_v(": Folders/files to ignore, specified using the "),_c('a',{attrs:{"href":"https://docs.oracle.com/javase/tutorial/essential/io/fileOps.html#glob"}},[_c('em',[_v("glob format")])]),_v(".")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("formats")]),_v(": File formats to analyze. Binary file formats, such as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("png")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("jpg")]),_v(", will be automatically labelled as the file type "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("binary")]),_v(" in the generated report. Default: all file formats")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ignoreCommitList")]),_v(": The list of commits to ignore during analysis. For accurate results, the commits should be provided with their full hash. Additionally, a range of commits can be specified using the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("..")]),_v(" notation e.g. "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("abc123..def456")]),_v(" (both inclusive).")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ignoreAuthorList")]),_v(": The list of authors to ignore during analysis. Authors specified in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("authors")]),_v(" field or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(" will be also be omitted if they are in this list. Authors should be specified by their "),_c('a',{attrs:{"href":"#a-note-about-git-author-name"}},[_v("Git Author Name")]),_v(".")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("fileSizeLimit")]),_v(": A file size limit for the repository in bytes as a single number without units, that will override the default file size limit. If not specified, the default file size limit will continue to be used.")])]),_v(" "),_c('p',[_c('strong',[_v("Fields to provide "),_c('em',[_v("author-level")]),_v(" info")]),_v(":"),_c('br'),_v("\nNote: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("authors")]),_v(" field should contain "),_c('em',[_v("all")]),_v(" authors that should be captured in the analysis.")]),_v(" "),_c('ul',[_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("gitId")]),_v(": Username of the author. "),_c('span',{staticClass:"badge bg-danger"},[_v("mandatory")]),_v(" field.")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("emails")]),_v(": Associated git emails of the author. For GitHub, this can be found in your "),_c('a',{attrs:{"href":"https://github.com/settings/emails"}},[_v("GitHub settings")]),_v(".")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("displayName")]),_v(": Name to display on the report for this author.")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("authorNames")]),_v(": Git Author Name(s) used in the author's commits. By default, RepoSense assumes an author would use their remote Git Host username as the Git username too. The meaning of "),_c('em',[_v("Git Author Name")]),_v(" is explained in "),_c('a',{attrs:{"href":"#a-note-about-git-author-name"}},[_c('em',[_v("A note about git author name")])]),_v(".")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ignoreGlobList")]),_v(": "),_c('em',[_v("Additional")]),_v(" (i.e. on top of the repo-level "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ignoreGlobList")]),_v(") folders/files to ignore for a specific author. The path glob syntax is specified by the "),_c('a',{attrs:{"href":"https://docs.oracle.com/javase/tutorial/essential/io/fileOps.html#glob"}},[_c('em',[_v("glob format")])]),_v(". In the example above, the actual "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ignoreGlobList")]),_v(" for "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("alice")]),_v(" would be "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("[\"about-us/**\", \"**index.html\", \"**.css\"]")]),_v(".")])]),_v(" "),_c('p',[_v("To verify your standalone configuration is as intended, add the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("_reposense/config.json")]),_v(" to your local copy of repo and run RepoSense against it as follows:"),_c('br')]),_v(" "),_c('ul',[_c('li',[_v("Format: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar --repo LOCAL_REPO_LOCATION")]),_v(" "),_c('br')]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar --repo c:/myRepose/foo/bar")]),_c('br'),_v("\nAfter that, view the report to see if the configuration you specified in the config file is being reflected correctly in the report.")])]),_v(" "),_c('h2',{attrs:{"id":"a-note-about-git-author-name"}},[_v("A note about git author name"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#a-note-about-git-author-name","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Git Author Name")]),_v(" refers to the customizable author's display name set in the local "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(".gitconfig")]),_v(" file. For example, in the Git Log's display:")]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"no-line-numbers hljs"}},[_c('span',[_v("...\n")]),_c('span',[_v("commit cd7f610e0becbdf331d5231887d8010a689f87c7\n")]),_c('span',[_v("Author: ConfiguredAuthorName \n")]),_c('span',[_v("Date: Fri Feb 9 19:14:41 2018 +0800\n")]),_c('span',[_v("\n")]),_c('span',[_v(" Make some changes to show my new author's name\n")]),_c('span',[_v("\n")]),_c('span',[_v("commit e3f699fd4ef128eebce98d5b4e5b3bb06a512f49\n")]),_c('span',[_v("Author: ActualGitHostId \n")]),_c('span',[_v("Date: Fri Feb 9 19:13:13 2018 +0800\n")]),_c('span',[_v("\n")]),_c('span',[_v(" Initial commit\n")]),_c('span',[_v(" ...\n")])])]),_c('p',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ActualGitHostId")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ConfiguredAuthorName")]),_v(" are both "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Git Author Name")]),_v(" of the same author."),_c('br'),_v("\nTo find the author name that you are currently using for your current git repository, run the following command within your git repository:")]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"no-line-numbers hljs"}},[_c('span',[_v("git config user.name\n")])])]),_c('p',[_v("To set the author name to the value you want (e.g., to set it to your GitHub username) for your current git repository, you can use the following command ("),_c('a',{attrs:{"href":"https://www.git-tower.com/learn/git/faq/change-author-name-email"}},[_v("more info")]),_v("):")]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"no-line-numbers hljs"}},[_c('span',[_v("git config user.name \"YOUR_AUTHOR_NAME”\n")])])]),_c('p',[_v("To set the author name to use a default value you want for future git repositories, you can use the following command:")]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"no-line-numbers hljs"}},[_c('span',[_v("git config --global user.name \"YOUR_AUTHOR_NAME”\n")])])]),_c('p',[_v("RepoSense expects the Git Author Name to be the same as author's username on the Git hosting platform (GitHub, GitLab, BitBucket). If an author's "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Git Author Name")]),_v(" is different from their username on the Git hosting platform, the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Git Author Name")]),_v(" needs to be specified in the standalone config file. If the author has more than one "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Git Author Name")]),_v(", multiple values can be entered too.")]),_v(" "),_c('box',{attrs:{"type":"warning","seamless":""}},[_c('p',[_v("Note: Symbols such as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("\"")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("!")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("/")]),_v(" etc. in your author name will be omitted, which may reduce the accuracy of the analysis if 2 names in the repository are approximately similar.")])])],1),_v(" "),_c('div',{attrs:{"id":"section-blurbs"}},[_c('h2',{attrs:{"id":"blurbs-md"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("blurbs.md")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#blurbs-md","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("You can optionally use "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("blurbs.md")]),_v(" to add blurbs in Markdown syntax for repository branches. These blurbs will be seen when grouping by "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repo/Branch")]),_v(". ("),_c('a',{attrs:{"href":"https://github.com/reposense/RepoSense/blob/master/docs/ug/blurbs.md"}},[_v("example")]),_v(")")]),_v(" "),_c('p',[_c('strong',[_v("Format")]),_v(":")]),_v(" "),_c('ul',[_c('li',[_v("First line in section: Link to the repository branch.")]),_v(" "),_c('li',[_v("Second line onwards: Blurb content.")]),_v(" "),_c('li',[_v("Delimiter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("")]),_v(". Everything on the line after the delimiter will be ignored.")])])])],1)])],1),_v(" "),_c('p')]),_v(" "),_m(9),_v(" "),_m(10),_v(" "),_c('box',{attrs:{"type":"tip","seamless":""}},[_c('p',[_v("There is also a published GitHub Action ("),_c('a',{attrs:{"href":"https://github.com/marketplace/actions/reposense-action"}},[_v("reposense-action")]),_v(") that can be used to generate and publish RepoSense reports. It is especially convenient for users who wish to skip the forking and setting up of a separate repository. For more information, refer to the "),_c('a',{attrs:{"href":"https://github.com/marketplace/actions/reposense-action#usage"}},[_v("usage description")]),_v(".")])])],1),_v(" "),_m(11)]),_v(" "),_c('overlay-source',{staticClass:"fixed-header-padding",attrs:{"id":"page-nav","tag-name":"nav","to":"page-nav"}},[_c('div',{staticClass:"nav-component slim-scroll"},[_c('overlay-source',{staticClass:"nav nav-pills flex-column my-0 small no-flex-wrap",attrs:{"id":"mb-page-nav","tag-name":"nav","to":"mb-page-nav"}},[_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#appendix-reposense-with-github-actions"}},[_v("Appendix: RepoSense with GitHub Actions‎")]),_v(" "),_c('nav',{staticClass:"nav nav-pills flex-column my-0 nested no-flex-wrap"},[_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#setting-up"}},[_v("Setting up‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#updating-the-report"}},[_v("Updating the report‎")])])])],1)])],1),_v(" "),_m(12)])} }; var pageVueStaticRenderFns = [function anonymous( ) { @@ -41,6 +41,6 @@ with(this){return _c('p',[_v("To access your regenerated RepoSense report, go to with(this){return _c('div',{attrs:{"id":"section-updating-the-report"}},[_c('h2',{attrs:{"id":"updating-the-report"}},[_v("Updating the report"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#updating-the-report","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_v("Manual:")])]),_v(" "),_c('ul',[_c('li',[_v("You can trigger GitHub to re-generate and re-deploy the report by pushing an empty commit to your fork.")]),_v(" "),_c('li',[_v("Currently, the GitHub Actions UI does not support the manual execution of workflows.")])]),_v(" "),_c('p',[_c('strong',[_v("Automated:")]),_v(" GitHub actions can be set to run periodically.")]),_v(" "),_c('ol',[_c('li',[_v("Edit the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(".github/workflows/main.yml")]),_v(" and uncomment the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("schedule:")]),_v(" section.")]),_v(" "),_c('li',[_v("You may change the expression after "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("cron:")]),_v(" to a schedule of your choice. Read more about cron syntax "),_c('a',{attrs:{"href":"https://help.github.com/en/actions/reference/events-that-trigger-workflows#scheduled-events-schedule"}},[_v("here")]),_v(".")]),_v(" "),_c('li',[_v("Commit your changes.")])])])} },function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('small',[_v("["),_c('span',[_c('strong',[_v("Powered by")])]),_v(" "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"30"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.2")]),_v(", generated on Tue, 14 May 2024, 13:12:51 UTC]")])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('small',[_v("["),_c('span',[_c('strong',[_v("Powered by")])]),_v(" "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"30"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.2")]),_v(", generated on Thu, 16 May 2024, 22:31:25 UTC]")])])])} }]; \ No newline at end of file diff --git a/ug/withNetlify.html b/ug/withNetlify.html index 61d10628c7..3486245ee1 100644 --- a/ug/withNetlify.html +++ b/ug/withNetlify.html @@ -11,7 +11,7 @@ - +

    You are looking at the user documentation for the most recent master branch of RepoSense (not released to the public yet). The documentation for the latest public release is here.

    Appendix: RepoSense with Netlify

    Note that Netlify has a low limit for free tier users (only 300 build minutes per month as at June 2020 -- a single report generation can take 2-3 build minutes, longer if your report includes many/big repositories).

    Setting up

    Step 1 Fork the publish-RepoSense repository using this link. Optionally, you can rename the fork to match your RepoSense report e.g., project-code-dashboard.

    Step 2 Set up Netlify for your fork as described in this guide.
    You will need to use the following in Step 5: Configure Your Settings of that guide:

    • build command: pip install requests && ./run.sh
    • publish directory: ./reposense-report

    After Netlify finishes building the site, you should be able to see a dummy report at the URL of your Netlify site.

    Step 3 Generate the report you want by updating the settings in your fork.

    1. Go to the run.sh file of your fork (on GitHub).
    2. Update the last line (i.e., the command for running RepoSense) to match the report you want to generate:
      java -jar RepoSense.jar --repos FULL_REPO_URL (assuming you want to generate a default report for just one repo)
      @@ -19,7 +19,7 @@ Netlify Preview

    Updating the report

    Manual: Netlify UI has a way for you to trigger a build, using which you can cause the report to be updated.

    Automated: Netlify's can be set up to update the report whenever a target repo of your report is updated, provided you are able to update the target repos in a certain way.

    1. Click on Settings in the top, choose Build & deploy from the left panel and scroll to Build hooks. Build hooks

    2. Click Add build hook, give your webhook a name, and choose the master branch to build. A Netlify URL will be generated.

    3. Go to your target repository (the repository you want to analyze) and click on Settings.

    4. Select Webhooks on left panel and click on Add webhook. Add webhook

    5. Copy the Netlify URL and paste it in the URL form field. -Webhook url

      Note: Although the build url is not that secretive, it should be kept safe to prevent any misuse.

    6. Select application.json as content type.

    7. Select Let me select individual events and based on your requirements check the checkboxes.

    8. Leave the Active checkbox checked.

    9. Click on Add webhook to save the webhook and add it.

    [Powered by MarkBind 5.5.2, generated on Tue, 14 May 2024, 13:12:51 UTC]
    +Webhook url

    Note: Although the build url is not that secretive, it should be kept safe to prevent any misuse.

  • Select application.json as content type.

  • Select Let me select individual events and based on your requirements check the checkboxes.

  • Leave the Active checkbox checked.

  • Click on Add webhook to save the webhook and add it.

  • [Powered by MarkBind 5.5.2, generated on Thu, 16 May 2024, 22:31:25 UTC]
    diff --git a/ug/withNetlify.page-vue-render.js b/ug/withNetlify.page-vue-render.js index b1ece56384..fe2d614633 100644 --- a/ug/withNetlify.page-vue-render.js +++ b/ug/withNetlify.page-vue-render.js @@ -1,7 +1,7 @@ var pageVueRenderFn = function anonymous( ) { -with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"fixed":""}},[_c('navbar',{attrs:{"type":"dark"},scopedSlots:_u([{key:"brand",fn:function(){return [_c('a',{staticClass:"navbar-brand",attrs:{"href":"/index.html","title":"Home"}},[_c('img',{attrs:{"width":"30px","src":"/favicon.ico"}})])]},proxy:true},{key:"right",fn:function(){return [_c('li',[_c('form',{staticClass:"navbar-form"},[_c('searchbar',{attrs:{"data":searchData,"placeholder":"Search","on-hit":searchCallback,"menu-align-right":""}})],1)])]},proxy:true}])},[_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/index.html"}},[_v("HOME")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/showcase.html"}},[_v("SHOWCASE")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/ug/index.html"}},[_v("USER GUIDE")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/dg/index.html"}},[_v("DEVELOPER GUIDE")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/about.html"}},[_v("ABOUT")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/contact.html"}},[_v("CONTACT")])]),_v(" "),_c('li',{attrs:{"tags":"dev"}},[_c('a',{staticClass:"nav-link",attrs:{"href":"https://reposense.org","target":"_blank"}},[_c('span',[_c('span',{staticClass:"fas fa-external-link-alt",attrs:{"aria-hidden":"true"}}),_v(" PRODUCTION SITE")])])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"https://github.com/RepoSense/reposense","target":"_blank"}},[_c('span',[_c('span',{staticClass:"fab fa-github",attrs:{"aria-hidden":"true"}})])])])]),_v(" "),_m(0)],1),_v(" "),_c('div',{attrs:{"id":"flex-body"}},[_c('overlay-source',{staticClass:"fixed-header-padding",attrs:{"id":"site-nav","tag-name":"nav","to":"site-nav"}},[_c('div',{staticClass:"site-nav-top"},[_c('div',{staticClass:"font-weight-bold mb-2",staticStyle:{"font-size":"1.25rem"}},[_c('span',[_c('strong',[_c('strong',[_v("USER GUIDE")])])])])]),_v(" "),_c('div',{staticClass:"nav-component slim-scroll"},[_c('div',[_c('site-nav',[_c('overlay-source',{staticClass:"site-nav-list site-nav-list-root",attrs:{"tag-name":"ul","to":"mb-site-nav"}},[_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/index.html"}},[_c('strong',[_v("Overview")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/generatingReports.html"}},[_c('strong',[_v("Generating reports")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/usingReports.html"}},[_c('strong',[_v("Using reports")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/customizingReports.html"}},[_c('strong',[_v("Customizing reports")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/sharingReports.html"}},[_c('strong',[_v("Sharing reports")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('strong',[_v("Appendices")]),_v(" "),_c('div',{staticClass:"site-nav-dropdown-btn-container"},[_c('i',{staticClass:"site-nav-dropdown-btn-icon site-nav-rotate-icon",attrs:{"onclick":"handleSiteNavClick(this.parentNode.parentNode, false); event.stopPropagation();"}},[_c('span',{staticClass:"glyphicon glyphicon-menu-down",attrs:{"aria-hidden":"true"}})])])]),_c('ul',{staticClass:"site-nav-dropdown-container site-nav-dropdown-container-open site-nav-list"},[_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/cli.html"}},[_v("CLI syntax reference")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/configFiles.html"}},[_v("Config files format")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/authorConfigSyntax.html"}},[_v("Advanced syntax: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/usingAuthorTags.html"}},[_v("Using "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("@@author")]),_v(" tags")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/withNetlify.html"}},[_v("RepoSense with Netlify")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/withGithubActions.html"}},[_v("RepoSense with GitHub Actions")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/withTravis.html"}},[_v("RepoSense with Travis")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/runSh.html"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("run.sh")]),_v(" format")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/faq.html"}},[_v("FAQ")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/troubleshooting.html"}},[_v("Troubleshooting")])])])])])])],1)],1)])]),_v(" "),_c('div',{staticClass:"fixed-header-padding",attrs:{"id":"content-wrapper"}},[_m(1),_v(" "),_c('div',{attrs:{"id":"section-setting-up"}},[_c('box',{attrs:{"type":"warning","seamless":""}},[_c('p',[_v("Note that Netlify has a low limit for free tier users (only 300 "),_c('em',[_v("build minutes")]),_v(" per month as at June 2020 -- a single report generation can take 2-3 build minutes, longer if your report includes many/big repositories).")])]),_v(" "),_m(2),_v(" "),_m(3),_v(" "),_m(4),_v(" "),_m(5),_v(" "),_c('p',[_v("After Netlify finishes building the site, you should be able to see a dummy report at the URL of your Netlify site.")]),_v(" "),_m(6),_v(" "),_m(7)],1),_v(" "),_m(8),_v(" "),_m(9),_v(" "),_m(10),_v(" "),_m(11),_v(" "),_c('ol',[_m(12),_v(" "),_m(13),_v(" "),_m(14),_v(" "),_m(15),_v(" "),_c('li',[_m(16),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Note: Although the build url is not that secretive, it should be kept safe to prevent any misuse.")])])],1),_v(" "),_m(17),_v(" "),_m(18),_v(" "),_m(19),_v(" "),_m(20)])])],1),_v(" "),_m(21)])} +with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"fixed":""}},[_c('navbar',{attrs:{"type":"dark"},scopedSlots:_u([{key:"brand",fn:function(){return [_c('a',{staticClass:"navbar-brand",attrs:{"href":"/index.html","title":"Home"}},[_c('img',{attrs:{"width":"30px","src":"/favicon.ico"}})])]},proxy:true},{key:"right",fn:function(){return [_c('li',[_c('form',{staticClass:"navbar-form"},[_c('searchbar',{attrs:{"data":searchData,"placeholder":"Search","on-hit":searchCallback,"menu-align-right":""}})],1)])]},proxy:true}])},[_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/index.html"}},[_v("HOME")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/showcase.html"}},[_v("SHOWCASE")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/ug/index.html"}},[_v("USER GUIDE")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/dg/index.html"}},[_v("DEVELOPER GUIDE")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/about.html"}},[_v("ABOUT")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/contact.html"}},[_v("CONTACT")])]),_v(" "),_c('li',{attrs:{"tags":"dev"}},[_c('a',{staticClass:"nav-link",attrs:{"href":"https://reposense.org","target":"_blank"}},[_c('span',[_c('span',{staticClass:"fas fa-external-link-alt",attrs:{"aria-hidden":"true"}}),_v(" PRODUCTION SITE")])])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"https://github.com/RepoSense/reposense","target":"_blank"}},[_c('span',[_c('span',{staticClass:"fab fa-github",attrs:{"aria-hidden":"true"}})])])])]),_v(" "),_m(0)],1),_v(" "),_c('div',{attrs:{"id":"flex-body"}},[_c('overlay-source',{staticClass:"fixed-header-padding",attrs:{"id":"site-nav","tag-name":"nav","to":"site-nav"}},[_c('div',{staticClass:"site-nav-top"},[_c('div',{staticClass:"font-weight-bold mb-2",staticStyle:{"font-size":"1.25rem"}},[_c('span',[_c('strong',[_c('strong',[_v("USER GUIDE")])])])])]),_v(" "),_c('div',{staticClass:"nav-component slim-scroll"},[_c('div',[_c('site-nav',[_c('overlay-source',{staticClass:"site-nav-list site-nav-list-root",attrs:{"tag-name":"ul","to":"mb-site-nav"}},[_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/index.html"}},[_c('strong',[_v("Overview")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/generatingReports.html"}},[_c('strong',[_v("Generating reports")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/usingReports.html"}},[_c('strong',[_v("Using reports")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/customizingReports.html"}},[_c('strong',[_v("Customizing reports")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/sharingReports.html"}},[_c('strong',[_v("Sharing reports")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('strong',[_v("Appendices")]),_v(" "),_c('div',{staticClass:"site-nav-dropdown-btn-container"},[_c('i',{staticClass:"site-nav-dropdown-btn-icon site-nav-rotate-icon",attrs:{"onclick":"handleSiteNavClick(this.parentNode.parentNode, false); event.stopPropagation();"}},[_c('span',{staticClass:"glyphicon glyphicon-menu-down",attrs:{"aria-hidden":"true"}})])])]),_c('ul',{staticClass:"site-nav-dropdown-container site-nav-dropdown-container-open site-nav-list"},[_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/cli.html"}},[_v("CLI syntax reference")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/configFiles.html"}},[_v("Config files format")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/authorConfigSyntax.html"}},[_v("Advanced syntax: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/usingAuthorTags.html"}},[_v("Using "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("@@author")]),_v(" tags")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/withNetlify.html"}},[_v("RepoSense with Netlify")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/withGithubActions.html"}},[_v("RepoSense with GitHub Actions")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/withTravis.html"}},[_v("RepoSense with Travis")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/runSh.html"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("run.sh")]),_v(" format")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/faq.html"}},[_v("FAQ")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/troubleshooting.html"}},[_v("Troubleshooting")])])])])])])],1)],1)])]),_v(" "),_c('div',{staticClass:"fixed-header-padding",attrs:{"id":"content-wrapper"}},[_m(1),_v(" "),_c('div',{attrs:{"id":"section-setting-up"}},[_c('box',{attrs:{"type":"warning","seamless":""}},[_c('p',[_v("Note that Netlify has a low limit for free tier users (only 300 "),_c('em',[_v("build minutes")]),_v(" per month as at June 2020 -- a single report generation can take 2-3 build minutes, longer if your report includes many/big repositories).")])]),_v(" "),_m(2),_v(" "),_m(3),_v(" "),_m(4),_v(" "),_m(5),_v(" "),_c('p',[_v("After Netlify finishes building the site, you should be able to see a dummy report at the URL of your Netlify site.")]),_v(" "),_m(6),_v(" "),_m(7)],1),_v(" "),_m(8),_v(" "),_m(9),_v(" "),_m(10),_v(" "),_m(11),_v(" "),_c('ol',[_m(12),_v(" "),_m(13),_v(" "),_m(14),_v(" "),_m(15),_v(" "),_c('li',[_m(16),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Note: Although the build url is not that secretive, it should be kept safe to prevent any misuse.")])])],1),_v(" "),_m(17),_v(" "),_m(18),_v(" "),_m(19),_v(" "),_m(20)])]),_v(" "),_c('overlay-source',{staticClass:"fixed-header-padding",attrs:{"id":"page-nav","tag-name":"nav","to":"page-nav"}},[_c('div',{staticClass:"nav-component slim-scroll"},[_c('overlay-source',{staticClass:"nav nav-pills flex-column my-0 small no-flex-wrap",attrs:{"id":"mb-page-nav","tag-name":"nav","to":"mb-page-nav"}},[_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#appendix-reposense-with-netlify"}},[_v("Appendix: RepoSense with Netlify‎")]),_v(" "),_c('nav',{staticClass:"nav nav-pills flex-column my-0 nested no-flex-wrap"},[_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#setting-up"}},[_v("Setting up‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#pr-previews"}},[_v("PR previews‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#updating-the-report"}},[_v("Updating the report‎")])])])],1)])],1),_v(" "),_m(21)])} }; var pageVueStaticRenderFns = [function anonymous( ) { @@ -68,6 +68,6 @@ with(this){return _c('li',[_c('p',[_v("Leave the "),_c('strong',[_v("Active")]), with(this){return _c('li',[_c('p',[_v("Click on "),_c('strong',[_v("Add webhook")]),_v(" to save the webhook and add it.")])])} },function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('small',[_v("["),_c('span',[_c('strong',[_v("Powered by")])]),_v(" "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"30"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.2")]),_v(", generated on Tue, 14 May 2024, 13:12:51 UTC]")])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('small',[_v("["),_c('span',[_c('strong',[_v("Powered by")])]),_v(" "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"30"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.2")]),_v(", generated on Thu, 16 May 2024, 22:31:25 UTC]")])])])} }]; \ No newline at end of file diff --git a/ug/withTravis.html b/ug/withTravis.html index 4e916f48ba..892b068db6 100644 --- a/ug/withTravis.html +++ b/ug/withTravis.html @@ -11,12 +11,12 @@ - +

    You are looking at the user documentation for the most recent master branch of RepoSense (not released to the public yet). The documentation for the latest public release is here.

    Appendix: RepoSense with Travis

    You can use the CI tool Travis to automate generating and publishing of RepoSense reports.

    Setting up

    The instructions below assume you are using GitHub pages to host your report.

    Step 1 Fork the publish-RepoSense repository using this link. Optionally, you can rename the fork to match your RepoSense report e.g., project-code-dashboard.

    Step 2 Generate a personal access token or deploy key on GitHub as explained in the panel below.

    Step 3 Login to Travis-CI. You may have to sign up first.

    Step 4 Sync your Travis account with GitHub:

    1. Go to your account.
    2. Click on Sync account to fetch all your repositories into Travis-CI.

    Step 5 Activate the repository:

    1. Go to your publish-RepoSense fork in Travis-CI
    2. Under Current tab, click on Activate repository.

    Step 6 Set the token/key:

    1. In the same page, click on More options on the right.
    2. Then, click on the Settings option:
      Travis-CI Dashboard
    3. Under Environment Variables, name a variable as GITHUB_TOKEN or GITHUB_DEPLOY_KEY depending on your earlier choice and paste the token/key into its value field; then click Add.
    4. Ensure that the Display value in build log is switched off for security reasons:
      Travis-CI Environment Variable

    Step 7 Update the report configuration:

    In your fork, edit run.sh (and if applicable, repo-config.csv, author-config.csv, group-config.csv) to customize the command line parameters or repositories to be analyzed.

    Step 8 View the generated report:

    1. Go to the Settings page of your fork in GitHub.
    2. Under the GitHub Pages section, look for Your site is published at [LINK]. It should look something like https://[YOUR_GITHUB_ID].github.io/publish-RepoSense. GitHub Setting

    It takes a few minutes for report generation. Meanwhile, you can monitor the progress live at Travis-CI's Builds.

    Updating the report

    Manual: Travis UI has a way for you to trigger a build, using which you can cause the report to be updated.

    1. Go to your fork in Travis-CI, click on More options on the right then Trigger build.
    2. In the pop up, click Trigger custom build.

    Automated: Travis-CI offers Cron Jobs in intervals of daily, weekly or monthly.

    1. Login to Travis-CI.
    2. Go to your fork in Travis-CI, click on More options on the right then access Settings.
    3. Under Cron Jobs, choose master for Branch, Always run for Options and pick an Interval of your choice; then click Add. -Travis-CI Cron
    [Powered by MarkBind 5.5.2, generated on Tue, 14 May 2024, 13:12:51 UTC]
    +Travis-CI Cron
    [Powered by MarkBind 5.5.2, generated on Thu, 16 May 2024, 22:31:25 UTC]
    diff --git a/ug/withTravis.page-vue-render.js b/ug/withTravis.page-vue-render.js index 09f159a4d0..510049062f 100644 --- a/ug/withTravis.page-vue-render.js +++ b/ug/withTravis.page-vue-render.js @@ -1,7 +1,7 @@ var pageVueRenderFn = function anonymous( ) { -with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"fixed":""}},[_c('navbar',{attrs:{"type":"dark"},scopedSlots:_u([{key:"brand",fn:function(){return [_c('a',{staticClass:"navbar-brand",attrs:{"href":"/index.html","title":"Home"}},[_c('img',{attrs:{"width":"30px","src":"/favicon.ico"}})])]},proxy:true},{key:"right",fn:function(){return [_c('li',[_c('form',{staticClass:"navbar-form"},[_c('searchbar',{attrs:{"data":searchData,"placeholder":"Search","on-hit":searchCallback,"menu-align-right":""}})],1)])]},proxy:true}])},[_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/index.html"}},[_v("HOME")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/showcase.html"}},[_v("SHOWCASE")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/ug/index.html"}},[_v("USER GUIDE")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/dg/index.html"}},[_v("DEVELOPER GUIDE")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/about.html"}},[_v("ABOUT")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/contact.html"}},[_v("CONTACT")])]),_v(" "),_c('li',{attrs:{"tags":"dev"}},[_c('a',{staticClass:"nav-link",attrs:{"href":"https://reposense.org","target":"_blank"}},[_c('span',[_c('span',{staticClass:"fas fa-external-link-alt",attrs:{"aria-hidden":"true"}}),_v(" PRODUCTION SITE")])])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"https://github.com/RepoSense/reposense","target":"_blank"}},[_c('span',[_c('span',{staticClass:"fab fa-github",attrs:{"aria-hidden":"true"}})])])])]),_v(" "),_m(0)],1),_v(" "),_c('div',{attrs:{"id":"flex-body"}},[_c('overlay-source',{staticClass:"fixed-header-padding",attrs:{"id":"site-nav","tag-name":"nav","to":"site-nav"}},[_c('div',{staticClass:"site-nav-top"},[_c('div',{staticClass:"font-weight-bold mb-2",staticStyle:{"font-size":"1.25rem"}},[_c('span',[_c('strong',[_c('strong',[_v("USER GUIDE")])])])])]),_v(" "),_c('div',{staticClass:"nav-component slim-scroll"},[_c('div',[_c('site-nav',[_c('overlay-source',{staticClass:"site-nav-list site-nav-list-root",attrs:{"tag-name":"ul","to":"mb-site-nav"}},[_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/index.html"}},[_c('strong',[_v("Overview")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/generatingReports.html"}},[_c('strong',[_v("Generating reports")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/usingReports.html"}},[_c('strong',[_v("Using reports")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/customizingReports.html"}},[_c('strong',[_v("Customizing reports")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/sharingReports.html"}},[_c('strong',[_v("Sharing reports")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('strong',[_v("Appendices")]),_v(" "),_c('div',{staticClass:"site-nav-dropdown-btn-container"},[_c('i',{staticClass:"site-nav-dropdown-btn-icon site-nav-rotate-icon",attrs:{"onclick":"handleSiteNavClick(this.parentNode.parentNode, false); event.stopPropagation();"}},[_c('span',{staticClass:"glyphicon glyphicon-menu-down",attrs:{"aria-hidden":"true"}})])])]),_c('ul',{staticClass:"site-nav-dropdown-container site-nav-dropdown-container-open site-nav-list"},[_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/cli.html"}},[_v("CLI syntax reference")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/configFiles.html"}},[_v("Config files format")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/authorConfigSyntax.html"}},[_v("Advanced syntax: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/usingAuthorTags.html"}},[_v("Using "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("@@author")]),_v(" tags")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/withNetlify.html"}},[_v("RepoSense with Netlify")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/withGithubActions.html"}},[_v("RepoSense with GitHub Actions")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/withTravis.html"}},[_v("RepoSense with Travis")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/runSh.html"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("run.sh")]),_v(" format")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/faq.html"}},[_v("FAQ")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/troubleshooting.html"}},[_v("Troubleshooting")])])])])])])],1)],1)])]),_v(" "),_c('div',{staticClass:"fixed-header-padding",attrs:{"id":"content-wrapper"}},[_m(1),_v(" "),_c('div',{attrs:{"id":"section-setting-up"}},[_m(2),_v(" "),_m(3),_v(" "),_c('div',{attrs:{"id":"section-fork-token"}},[_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("The instructions below assume you are using GitHub pages to host your report.")])]),_v(" "),_m(4)],1),_v(" "),_m(5),_v(" "),_c('div',{staticClass:"indented-level0"},[_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('span',[_c('span',{staticClass:"glyphicon glyphicon-log-in",attrs:{"aria-hidden":"true"}})]),_v(" Granting write access on GitHub")])]},proxy:true}])},[_v(" "),_c('div',[_c('h2',{attrs:{"id":"granting-write-access-to-a-repository"}},[_v("Granting write-access to a repository"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#granting-write-access-to-a-repository","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("We recommend using a "),_c('a',{attrs:{"href":"https://github.blog/2013-05-16-personal-api-tokens/"}},[_v("personal access token")]),_v(" if aiming for the ease of setup and "),_c('a',{attrs:{"href":"https://developer.github.com/v3/guides/managing-deploy-keys/#deploy-keys"}},[_v("deploy key")]),_v(" if aiming for enhanced security.")]),_v(" "),_c('h3',{attrs:{"id":"if-you-wish-to-use-personal-access-token"}},[_v("If you wish to use "),_c('em',[_v("personal access token")]),_v(":"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#if-you-wish-to-use-personal-access-token","onclick":"event.stopPropagation()"}})]),_v(" "),_c('ol',[_c('li',[_c('strong',[_v("Create a "),_c('em',[_v("personal access token")])]),_v(" by following this "),_c('a',{attrs:{"href":"https://help.github.com/articles/creating-a-personal-access-token-for-the-command-line/"}},[_v("guide")]),_v(" and give only "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("public_repo")]),_v(" permission.")]),_v(" "),_c('li',[_c('strong',[_v("Copy the token")]),_v(" for later use.")])]),_v(" "),_c('h3',{attrs:{"id":"if-you-wish-to-use-deploy-key"}},[_v("If you wish to use "),_c('em',[_v("deploy key")]),_v(":"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#if-you-wish-to-use-deploy-key","onclick":"event.stopPropagation()"}})]),_v(" "),_c('box',{attrs:{"type":"info"},scopedSlots:_u([{key:"icon",fn:function(){return [_c('span',{staticClass:"fab fa-windows",attrs:{"aria-hidden":"true"}})]},proxy:true}])},[_v(" "),_c('p',[_v("[Windows users] "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ssh-keygen")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("base64")]),_v(" are accessible using "),_c('a',{attrs:{"href":"https://gitforwindows.org/"}},[_v("Git Bash")]),_v(".")])]),_v(" "),_c('ol',[_c('li',[_c('strong',[_v("Create a public-private key pair")]),_v(" (without a passphrase) using the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ssh-keygen")]),_v(". "),_c('br'),_v("\ni.e., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ssh-keygen -t ecdsa -b 521 -f id_reposense -q -N \"\"")])]),_v(" "),_c('li',[_c('strong',[_v("Create a deploy key")]),_v(" as follows:\n"),_c('ol',[_c('li',[_v("Go to the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("settings")]),_v(" page of your publish-RepoSense fork")]),_v(" "),_c('li',[_v("Click on the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Deploy keys")]),_v(" item in the navigation menu in that page")]),_v(" "),_c('li',[_v("Click on the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Add deploy key")]),_v(" button and create a new deploy key with the contents of "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("id_reposense.pub")]),_v(".")])])]),_v(" "),_c('li',[_c('strong',[_v("Copy the private key")]),_v(" in base64 encoded format for later use. "),_c('br'),_v("\ni.e., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("cat id_reposense | base64 -w 0")])])])],1)])],1),_v(" "),_c('p'),_v(" "),_m(6),_v(" "),_m(7),_v(" "),_m(8),_v(" "),_m(9),_v(" "),_m(10),_v(" "),_m(11),_v(" "),_m(12),_v(" "),_m(13),_v(" "),_c('span',{attrs:{"id":"section-edit-configs"}},[_m(14),_v(" "),_c('div',{staticClass:"indented-level0"},[_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('span',[_c('span',{staticClass:"glyphicon glyphicon-log-in",attrs:{"aria-hidden":"true"}})]),_v(" Appendix: "),_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("run.sh")]),_v(" format")])])]},proxy:true}])},[_v(" "),_c('div',[_c('h1',{staticClass:"display-4",attrs:{"id":"appendix-run-sh-format"}},[_c('span',[_v("Appendix: run.sh format")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#appendix-run-sh-format","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{staticClass:"lead"},[_c('p',[_c('a',{attrs:{"href":"https://github.com/reposense/publish-RepoSense/blob/master/run.sh"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("run.sh")])]),_v(" is a script used for automating RepoSense report generation.")])]),_v(" "),_c('h3',{attrs:{"id":"customizing-the-reposense-command"}},[_v("Customizing the RepoSense command"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#customizing-the-reposense-command","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("You can update the RepoSense command (i.e., the last line) in the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("run.sh")]),_v(" to match your needs.")]),_v(" "),_c('div',{staticClass:"indented-level0"},[_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('span',[_c('span',{staticClass:"glyphicon glyphicon-log-in",attrs:{"aria-hidden":"true"}})]),_v(" Appendix: "),_c('strong',[_v("CLI syntax reference")])])]},proxy:true}])},[_v(" "),_c('div',[_c('h1',{staticClass:"display-4",attrs:{"id":"appendix-cli-syntax-reference"}},[_c('span',[_v("Appendix: CLI syntax reference")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#appendix-cli-syntax-reference","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{staticClass:"lead"},[_c('p',[_v("The command "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar")]),_v(" takes several flags.")])]),_v(" "),_c('box',[_c('p',[_c('strong',[_v("Examples")]),_v(":")]),_v(" "),_c('p',[_v("An example of a command using most parameters:"),_c('br'),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar --repos https://github.com/reposense/RepoSense.git --output ./report_folder --since 31/1/2017 --until 31/12/2018 --formats java adoc xml --view --ignore-standalone-config --last-modified-date --timezone UTC+08 --find-previous-authors --analyze-authorship --originality-threshold 0.66")])]),_v(" "),_c('p',[_v("Same command as above but using most parameters in alias format:"),_c('br'),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar -r https://github.com/reposense/RepoSense.git -o ./report_folder -s 31/1/2017 -u 31/12/2018 -f java adoc xml -v -i -l -t UTC+08 -F -A -ot 0.66")])])]),_v(" "),_c('p',[_v("The section below provides explanations for each of the flags.")]),_v(" "),_c('h3',{attrs:{"id":"analyze-authorship-a"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--analyze-authorship")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-A")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#analyze-authorship-a","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--analyze-authorship")])]),_v(": Performs further analysis to distinguish between partial and full credit attribution for\nlines of code assigned to the author.")]),_v(" "),_c('ul',[_c('li',[_v("Default: this feature is turned "),_c('em',[_c('strong',[_v("off")])]),_v(" by default and the author will receive partial credits for all lines of\ncode, as the code lines are at least partial credit but may not qualify for full credit.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-A")]),_v(" (upper case)")]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--analyze-authorship")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-A")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("A darker background colour represents full credit, while a lighter background colour represents partial credit.")]),_v(" "),_c('p',[_v("If the code is attributed to a different author by the user via "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("@@author")]),_v(" tag, then the new author will be given\npartial credit.")])]),_v(" "),_c('h3',{attrs:{"id":"assets-a"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--assets")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-a")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#assets-a","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{attrs:{"id":"section-assets"}},[_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--assets ASSETS_DIRECTORY")])]),_v(": Specifies where to place assets for report generation.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ASSETS_DIRECTORY")]),_v(" The directory containing the assets files. A "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("favicon.ico")]),_v(" file can be placed here to customize the favicon of the dashboard, while a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("title.md")]),_v(" file can be placed to customize the "),_c('a',{attrs:{"href":"https://reposense.org/ug/customizingReports.html#add-a-title"}},[_v("title")]),_v(" of the report using "),_c('a',{attrs:{"href":"https://www.markdownguide.org/basic-syntax/"}},[_v("Markdown syntax")]),_v(".")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-a")])]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--assets ./assets")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-a ./assets")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("If "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--assets")]),_v(" is not specified, RepoSense looks for assets in the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./assets")]),_v(" directory.")])])])],1),_v(" "),_c('h3',{attrs:{"id":"config-c"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--config")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-c")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#config-c","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{attrs:{"id":"section-config"}},[_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--config CONFIG_DIRECTORY")])]),_v(": Specifies that config files located in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("CONFIG_DIRECTORY")]),_v(" should be used to customize the report.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("CONFIG_DIRECTORY")]),_v(" The directory containing the config files. Should contain a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(" file. Optionally, can contain an "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(" file or/and a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("group-config.csv")]),_v(" file or/and a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("report-config.json")]),_v(" file or/and a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("blurbs.md")]),_v(" file.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-c")])]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar --config ./config")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("Cannot be used with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repos")]),_v(". The "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repos")]),_v(" flag will take precedence over this flag.")]),_v(" "),_c('li',[_v("If both "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repos")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--config")]),_v(" are not specified, RepoSense looks for config files in the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./config")]),_v(" directory.")]),_v(" "),_c('li',[_v("Config files must follow "),_c('a',{attrs:{"href":"/RepoSense/ug/configFiles.html"}},[_v("this")]),_v(" format.")])])])],1),_v(" "),_c('h3',{attrs:{"id":"formats-f"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--formats")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-f")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#formats-f","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--formats LIST_OF_FORMATS")])]),_v(": Specifies which file extensions to be included in the analysis.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("LIST_OF_FORMATS")]),_v(" A space-separated list of file extensions that should be included in the analysis."),_c('br'),_v("\nDefault: all file formats")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-f")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--formats css fxml gradle")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-f css fxml gradle")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Binary file formats, such as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("jpg")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("png")]),_v(","),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("exe")]),_v(","),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("zip")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("rar")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("docx")]),_v(", and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("pptx")]),_v(", all will be labelled as the file type "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("binary")]),_v(" in the generated report.")])]),_v(" "),_c('h3',{attrs:{"id":"find-previous-authors-f"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--find-previous-authors")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-F")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#find-previous-authors-f","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--find-previous-authors")])]),_v(": Utilizes Git blame's ignore revisions functionality, RepoSense will attempt to blame the line changes caused by commits in the ignore commit list to the previous authors who altered those lines (if available).")]),_v(" "),_c('ul',[_c('li',[_v("Default: RepoSense will assume that no authors are responsible for the code changes in the lines altered by commits in the ignore commit list.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-F")]),_v(" (uppercase F)")]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--find-previous-authors")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-F")])])]),_v(" "),_c('h3',{attrs:{"id":"help-h"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--help")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-h")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#help-h","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--help")])]),_v(": Shows the help message.")]),_v(" "),_c('ul',[_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-h")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Cannot be used with any other flags. This flag takes precedence over all other flags.")])]),_v(" "),_c('h3',{attrs:{"id":"ignore-standalone-config-i"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--ignore-standalone-config")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-i")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#ignore-standalone-config-i","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--ignore-standalone-config")])]),_v(": Specifies that the standalone config file in the repo should be ignored.")]),_v(" "),_c('ul',[_c('li',[_v("Default: the standalone config file is not ignored")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-i")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--ignore-standalone-config")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-i")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("This flag overrides the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Ignore standalone config")]),_v(" field in the CSV config file.")])]),_v(" "),_c('h3',{attrs:{"id":"ignore-filesize-limit-i"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--ignore-filesize-limit")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-I")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#ignore-filesize-limit-i","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--ignore-filesize-limit")])]),_v(": Specifies that the file size limit (both default and user-defined) should be ignored during the analysis.")]),_v(" "),_c('ul',[_c('li',[_v("Default: the file size limit is not ignored")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-I")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--ignore-filesize-limit")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-I")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("All files are subject to a default file size limit or a custom size limit set by the user. Most files should not be\naffected by the default size limit. This flag can be useful for including files in your report that are affected by\nthe size limit. Note that this flag may result in large report sizes and/or slower report generation.")])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("This flag overrides the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Ignore file size limit")]),_v(" field in the CSV config file.")])]),_v(" "),_c('h3',{attrs:{"id":"last-modified-date-l"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--last-modified-date")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-l")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#last-modified-date-l","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--last-modified-date")])]),_v(": Specifies that the last modified date of each line of code should be added to "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("authorship.json")]),_v(".")]),_v(" "),_c('ul',[_c('li',[_v("Default: the last modified date of each line of code will not be added to "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("authorship.json")])]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-l")]),_v(" (lowercase L)")]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--last-modified-date")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-l")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("Cannot be used with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--shallow-cloning")]),_v(". This may result in an incorrect last modified date.")]),_v(" "),_c('li',[_v("The last modified dates will be in the same timezone specified with the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--timezone")]),_v(" flag.")])])]),_v(" "),_c('h3',{attrs:{"id":"originality-threshold-ot"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--originality-threshold")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-ot")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#originality-threshold-ot","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--originality-threshold [VALUE]")])]),_v(": Specifies the cut-off point for partial and full credit\nin "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--analyze-authorship")]),_v(". Author will be given full credit if their contribution exceeds this threshold, else partial\ncredit is given.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("VALUE")]),_v(" Optional. Acceptable range: [0.0, 1.0]."),_c('br'),_v("\nDefault: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("0.51")])]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-ot")])]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--originality-threshold 0.66")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-ot 0.66")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("Requires "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--analyze-authorship")]),_v(" flag.")]),_v(" "),_c('li',[_v("An author's contribution, or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("originality score")]),_v(", is calculated using Levenshtein Distance (Edit Distance) algorithm.\nWe compare the difference between current code line and its previous versions.")])])]),_v(" "),_c('h3',{attrs:{"id":"output-o"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--output")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-o")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#output-o","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--output OUTPUT_DIRECTORY")])]),_v(": Indicates where to save the report generated.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("OUTPUT_DIRECTORY")]),_v(" The location for the generated "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("reposense-report")]),_v(" folder."),_c('br'),_v("\nDefault: current directory")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-o")])]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--output ./foo")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-o ./foo")]),_v(" (the report will be in the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./foo/reposense-report")]),_v(" folder)")])]),_v(" "),_c('h3',{attrs:{"id":"period-p"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--period")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-p")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#period-p","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--period PERIOD")])]),_v(": Specifies the period of analysis window.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("PERIOD")]),_v(" The period of analysis window, in the format "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("nd")]),_v(" (for n days) or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("nw")]),_v(" (for n weeks). It is used to calculate end date if only start date is specified, or calculate end date if only start date is specified.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-p")])]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--period 30d")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--period 4w")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("If both start date and end date are not specified, the date of generating the report will be taken as the end date.")]),_v(" "),_c('li',[_v("May analyze the incorrect date range if used with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since d1")]),_v(". The program will throw a warning.")]),_v(" "),_c('li',[_v("Cannot be used with both "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--until")]),_v(". The program will throw an exception.")])])]),_v(" "),_c('h3',{attrs:{"id":"repo-repos-r"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repo")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repos")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-r")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#repo-repos-r","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repo REPO_LOCATION")])]),_v(": Specifies which repositories to analyze.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("REPO_LOCATION")]),_v(" A list of URLs or the disk location of the git repositories to analyze, separated by spaces.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-r")])]),_v(" "),_c('li',[_v("Examples:\n"),_c('ul',[_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repos https://github.com/reposense/RepoSense.git")])]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repo https://github.com/reposense/RepoSense.git c:/myRepose/foo/bar")]),_v(": analyzes the two specified repos (one remote, one local) and generates one report containing details of both.")])])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Cannot be used with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--config")]),_v(". This flag takes precedence over "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--config")]),_v(".")])]),_v(" "),_c('h3',{attrs:{"id":"shallow-cloning-s"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--shallow-cloning")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-S")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#shallow-cloning-s","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--shallow-cloning")])]),_v(": Clones repositories using Git's shallow cloning functionality, which can significantly reduce the time taken to clone large repositories. However, the flag should not be used for smaller repositories where the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(".git")]),_v(" file is smaller than 500 MB, as it would create overhead.")]),_v(" "),_c('ul',[_c('li',[_v("Default: RepoSense does not clone repositories using Git's shallow cloning functionality.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-S")]),_v(" (uppercase S)")]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--shallow-cloning")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-S")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Cannot be used with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--last-modified-date")]),_v(". This may result in an incorrect last modified date.")])]),_v(" "),_c('h3',{attrs:{"id":"since-s"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-s")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#since-s","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since START_DATE")])]),_v(": Specifies the start date for the period to be analyzed.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("START_DATE")]),_v(" The first day of the period to be analyzed, in the format "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("DD/MM/YYYY")]),_v("."),_c('br'),_v("\nDefault: one month before the current date")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-s")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since 21/10/2017")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-s 21/10/2017")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("If the start date is not specified, only commits made one month before the end date (if specified) or the date of generating the report, will be captured and analyzed.")]),_v(" "),_c('li',[_v("If "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("d1")]),_v(" is specified as the start date ("),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since d1")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-s d1")]),_v("), then the program will search for the earliest commit date of all repositories and use that as the start date.")]),_v(" "),_c('li',[_v("If "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("d1")]),_v(" is specified together with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--period")]),_v(", then the program will warn that the date range being analyzed may be incorrect.")])])]),_v(" "),_c('h3',{attrs:{"id":"timezone-t"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--timezone")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-t")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#timezone-t","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--timezone ZONE_ID")])]),_v(": Indicates the timezone to be used for the analysis.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ZONE_ID")]),_v(" The timezone in the format "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ZONE_ID[±hh[mm]]")]),_v("."),_c('br'),_v("\nDefault: system's default timezone")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-t")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--timezone UTC+08")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-t UTC-1030")])])]),_v(" "),_c('h3',{attrs:{"id":"until-u"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--until")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-u")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#until-u","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--until END_DATE")])]),_v(": Specifies the end date of the analysis period.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("END_DATE")]),_v(" The last date of the period to be analyzed, in the format "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("DD/MM/YYYY")]),_v("."),_c('br'),_v("\nDefault: current date")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-u")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--until 21/10/2017")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-u 21/10/2017")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Note: If the end date is not specified, the date of generating the report will be taken as the end date.")])]),_v(" "),_c('h3',{attrs:{"id":"version-v"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--version")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-V")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#version-v","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--version")])]),_v(": Shows the version of RepoSense.")]),_v(" "),_c('ul',[_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-V")]),_v(" (upper case)")])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Cannot be used with any other flags. This flag takes precedence over all other flags other than "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--help")]),_v(".")])]),_v(" "),_c('h3',{attrs:{"id":"view-v"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--view")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-v")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#view-v","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--view [REPORT_FOLDER]")])]),_v(": Specifies that the report should be opened in the default browser.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("REPORT_FOLDER")]),_v(" Optional. If specified, no analysis will be performed and the report specified by the argument will be opened."),_c('br'),_v("\nDefault: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./reposense-report")])]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-v")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--view")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-v")])])])],1)])],1),_v(" "),_c('p'),_v(" "),_c('h3',{attrs:{"id":"specifying-which-version-of-reposense-to-use"}},[_v("Specifying which version of RepoSense to use"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#specifying-which-version-of-reposense-to-use","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Depending on which version you wish to use for report generation, add one of the following flags to the line "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./get-reposense.py")]),_v(" in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("run.sh")]),_v(" (e.g., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./get-reposense.py --release")]),_v("):")]),_v(" "),_c('ul',[_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--release")]),_v(": Use the latest release (Stable)")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--master")]),_v(": Use the latest version of the master branch")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--tag TAG")]),_v(" (e.g. "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--tag v1.6.1")]),_v("): Use the version identified by the Git tag given")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--commit COMMIT")]),_v(" (e.g. "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--commit abc123")]),_v("): Use the version identified by the Git commit SHA given")])])])])],1),_v(" "),_c('p'),_v(" "),_c('div',{staticClass:"indented-level0"},[_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('span',[_c('span',{staticClass:"glyphicon glyphicon-log-in",attrs:{"aria-hidden":"true"}})]),_v(" Appendix: "),_c('strong',[_v("Config files format")])])]},proxy:true}])},[_v(" "),_c('div',[_c('h1',{staticClass:"display-4",attrs:{"id":"appendix-config-files-format"}},[_c('span',[_v("Appendix: Config files format")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#appendix-config-files-format","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{staticClass:"lead"},[_c('p',[_v("Given below are the details of the various config files used by RepoSense.")])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_c('strong',[_v("RepoSense ignores the order of column headers in the CSV config files. However, the spelling of the column headers must match the specified headers exactly, or the column would be ignored by RepoSense.")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_c('strong',[_v("A value in a config file is optional to provide unless it is specified as "),_c('span',{staticClass:"badge bg-danger"},[_v("mandatory")])]),_v(".")])]),_v(" "),_c('h2',{attrs:{"id":"repo-config-csv"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#repo-config-csv","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(" file contains repo-level config data.")]),_v(" Each row represents a repository's configuration ("),_c('a',{attrs:{"href":"/RepoSense/ug/repo-config.csv"}},[_v("example")]),_v(").")]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Column Name")]),_v(" "),_c('th',[_v("Explanation")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_v("Repository's Location "),_c('span',{staticClass:"badge bg-danger"},[_v("mandatory")])]),_v(" "),_c('td',[_v("The "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Remote Repo URL")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Disk Path")]),_v(" to the git repository e.g., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://github.com/foo/bar.git")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("C:\\Users\\user\\Desktop\\GitHub\\foo\\bar")])])]),_v(" "),_c('tr',[_c('td',[_v("Branch")]),_v(" "),_c('td',[_v("The branch to analyze in the target repository e.g., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("master")]),_v(". Default: the default branch of the repo")])]),_v(" "),_c('tr',[_c('td',[_v("File formats"),_c('sup',[_v("*+")])]),_v(" "),_c('td',[_v("The file extensions to analyze. Binary file formats, such as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("png")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("jpg")]),_v(", will be automatically labelled as the file type "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("binary")]),_v(" in the generated report. Default: all file formats")])]),_v(" "),_c('tr',[_c('td',[_v("Find Previous Authors")]),_v(" "),_c('td',[_v("Enter "),_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("yes")])]),_v(" to utilize Git blame's ignore revisions functionality, RepoSense will attempt to blame the line changes caused by commits in the ignore commit list to the previous authors who altered those lines (if available).")])]),_v(" "),_c('tr',[_c('td',[_v("Ignore Glob List"),_c('sup',[_v("*+")])]),_v(" "),_c('td',[_v("The list of file path globs to ignore during analysis for each author e.g., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("test/**;temp/**")]),_v(". Refer to the "),_c('a',{attrs:{"href":"https://docs.oracle.com/javase/tutorial/essential/io/fileOps.html#glob"}},[_c('em',[_v("glob format")])]),_v(" for the path glob syntax.")])]),_v(" "),_c('tr',[_c('td',[_v("Ignore standalone config")]),_v(" "),_c('td',[_v("To ignore the standalone config file (if any) in target repository, enter "),_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("yes")])]),_v(". If the cell is empty, the standalone config file in the repo (if any) will take precedence over configurations provided in the csv files.")])]),_v(" "),_c('tr',[_c('td',[_v("Ignore Commits List"),_c('sup',[_v("*+")])]),_v(" "),_c('td',[_v("The list of commits to ignore during analysis. For accurate results, the commits should be provided with their full hash. Additionally, a range of commits can be specified using the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("..")]),_v(" notation e.g. "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("abc123..def456")]),_v(" (both inclusive).")])]),_v(" "),_c('tr',[_c('td',[_v("Ignore Authors List"),_c('sup',[_v("*+")])]),_v(" "),_c('td',[_v("The list of authors to ignore during analysis. Authors should be specified by their "),_c('a',{attrs:{"href":"#a-note-about-git-author-name"}},[_v("Git Author Name")]),_v(".")])]),_v(" "),_c('tr',[_c('td',[_v("Shallow Cloning")]),_v(" "),_c('td',[_v("Enter "),_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("yes")])]),_v(" to clone the repository using Git's shallow cloning functionality. This option can significantly reduce the time taken to clone large repositories. However, the option should ideally be disabled for smaller repositories where the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(".git")]),_v(" file is smaller than 500 MB, as it would create overhead.")])]),_v(" "),_c('tr',[_c('td',[_v("File Size Limit"),_c('sup',[_v("+")])]),_v(" "),_c('td',[_v("Enter a file size limit for the repository in bytes as a single number without units (for a size limit of 1MB for example, enter 1000000). This file size limit will override the default file size limit (500KB). Files exceeding the file size limit will be marked as ignored and only the file name and line count will be reflected in the report.")])]),_v(" "),_c('tr',[_c('td',[_v("Ignore File Size Limit")]),_v(" "),_c('td',[_v("Enter "),_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("yes")])]),_v(" to ignore both the default file size limit and the file size limit possibly set by the user in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(".")])]),_v(" "),_c('tr',[_c('td',[_v("Skip Ignored File Analysis")]),_v(" "),_c('td',[_v("Enter "),_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("yes")])]),_v(" to ignore analysis of files exceeding the file size limit entirely. If file analysis is skipped, all information about the file will be omitted from the generated report. This option can significantly improve report generation time.")])])])])]),_c('box',{attrs:{"type":"info","seamless":""}},[_v("\nThe Shallow Cloning option is incompatible with the \"--last-modified-date\" CLI flag.\n")]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_v("\nIf Ignore File Size Limit is yes, the File Size Limit and Skip Ignored File Analysis columns are ignored.\n")]),_v(" "),_c('p',[_c('sup',[_v("* "),_c('strong',[_v("Multi-value column")]),_v(": multiple values can be entered in this column using a semicolon "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(";")]),_v(" as the separator.")]),_c('br'),_v(" "),_c('sup',[_v("+ "),_c('strong',[_v("Overrideable column")]),_v(": prepend with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("override:")]),_v(" to use entered value(s) instead of value(s) from standalone config.")])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("When using "),_c('a',{attrs:{"href":"#config-json-standalone-config-file"}},[_v("standalone config")]),_v(" (if it is not ignored), it is possible to override specific values from the standalone config by prepending the entered value with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("override:")]),_v(".")])]),_v(" "),_c('h2',{attrs:{"id":"author-config-csv"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#author-config-csv","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Optionally, you can use an "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(" (which should be in the same directory as the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(" file) to provide more details about the authors to analyze ("),_c('a',{attrs:{"href":"/RepoSense/ug/author-config.csv"}},[_v("example")]),_v("). It should contain the following columns:")]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Column Name")]),_v(" "),_c('th',[_v("Explanation")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_v("Repository's Location"),_c('sup',[_v("*")])]),_v(" "),_c('td',[_v("Same as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(". Default: all the repos in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(".")])]),_v(" "),_c('tr',[_c('td',[_v("Branch")]),_v(" "),_c('td',[_v("The branch to analyze for this author, e.g., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("master")]),_v(". Default: the author will be bound to all the repos in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(" that has the same repo's location, regardless of branch.")])]),_v(" "),_c('tr',[_c('td',[_v("Author's Git Host ID"),_c('sup',[_v("#")]),_v(" "),_c('span',{staticClass:"badge bg-danger"},[_v("mandatory")])]),_v(" "),_c('td',[_v("Username of the target author's profile on GitHub, GitLab or Bitbucket, e.g."),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("JohnDoe")]),_v(".")])]),_v(" "),_c('tr',[_c('td',[_v("Author's Emails"),_c('sup',[_v("*")])]),_v(" "),_c('td',[_v("Associated emails of the author. For GitHub users, this can be found in your "),_c('a',{attrs:{"href":"https://github.com/settings/emails"}},[_v("GitHub settings")]),_v(".")])]),_v(" "),_c('tr',[_c('td',[_v("Author's Display Name")]),_v(" "),_c('td',[_v("The name to display for the author. Default: author's username.")])]),_v(" "),_c('tr',[_c('td',[_v("Author's Git Author Name"),_c('sup',[_v("*")])]),_v(" "),_c('td',[_v("The meaning of "),_c('em',[_v("Git Author Name")]),_v(" is explained in "),_c('a',{attrs:{"href":"#a-note-about-git-author-name"}},[_c('em',[_v("A note about git author name")])]),_v(".")])]),_v(" "),_c('tr',[_c('td',[_v("Ignore Glob List"),_c('sup',[_v("*")])]),_v(" "),_c('td',[_v("Files to ignore for this author, in addition to files ignored by the patterns specified in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(". The path glob syntax is the same as that of Ignore Glob List in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(".")])])])])]),_c('p',[_c('sup',[_v("* "),_c('strong',[_v("Multi-value column")]),_v(": multiple values can be entered in this column using a semicolon "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(";")]),_v(" as the separator.")]),_v(" "),_c('br'),_v(" "),_c('sup',[_v("# For backward compatibility, "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Author's GitHub ID")]),_v(" is still accepted as the header in place of "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Author's Git Host ID")]),_v(".")])]),_v(" "),_c('p',[_v("If "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(" is not given and the repo has not provided author details in a standalone config file, all the authors of the repositories within the date range specified (if any) will be analyzed.")]),_v(" "),_c('p',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(" has some advanced syntax that can help to reduce duplication of the author's information. The syntax guide is given below:")]),_v(" "),_c('div',{staticClass:"indented-level0"},[_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('span',[_c('span',{staticClass:"glyphicon glyphicon-log-in",attrs:{"aria-hidden":"true"}})]),_v(" Appendix: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(" advanced syntax")])]},proxy:true}])},[_v(" "),_c('div',[_c('h1',{staticClass:"display-4",attrs:{"id":"appendix-author-config-csv-advanced-syntax"}},[_c('span',[_v("Appendix: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(" advanced syntax")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#appendix-author-config-csv-advanced-syntax","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{staticClass:"lead"},[_c('p',[_v("Given below are the advanced syntax available for "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(".")])]),_v(" "),_c('h2',{attrs:{"id":"multiple-repository-s-location-per-author"}},[_v("Multiple "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repository's Location")]),_v(" per author"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#multiple-repository-s-location-per-author","onclick":"event.stopPropagation()"}})]),_v(" "),_c('h4',{attrs:{"id":"specifying-multiple-repository-s-location"}},[_v("Specifying multiple "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repository's Location")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#specifying-multiple-repository-s-location","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("To specify multiple "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repository's Location")]),_v(" in a single row, we can use a semicolon "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(";")]),_v(" as a separator.")]),_v(" "),_c('p',[_v("Below is an example:")]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Repository's Location")]),_v(" "),_c('th',[_v("Branch")]),_v(" "),_c('th',[_v("Author's Git Host ID")]),_v(" "),_c('th',[_v("... Hidden columns")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://github.com/reposense/RepoSense.git;https://github.com/MarkBind/markbind.git")])]),_v(" "),_c('td',[_v("master")]),_v(" "),_c('td',[_v("sikai00")]),_v(" "),_c('td',[_v("--")])])])])]),_c('p',[_v("We have now furnished author details for both repositories in a single row, instead of having two individual rows per "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repository's Location")]),_v(".")]),_v(" "),_c('br'),_v(" "),_c('h4',{attrs:{"id":"specifying-repository-s-location-with-one-or-more-specific-branches"}},[_v("Specifying "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repository's Location")]),_v(" with one or more specific branches"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#specifying-repository-s-location-with-one-or-more-specific-branches","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("To list out one or more branches for a particular "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repository's Location")]),_v(", we can use a pipe "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("|")]),_v(" separator to demarcate the different branches.")]),_v(" "),_c('p',[_v("Below is an example:")]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Repository's Location")]),_v(" "),_c('th',[_v("Branch")]),_v(" "),_c('th',[_v("Author's Git Host ID")]),_v(" "),_c('th',[_v("... Hidden columns")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://github.com/reposense/RepoSense.git~master|release|cypress")])]),_v(" "),_c('td',[_v("master")]),_v(" "),_c('td',[_v("sikai00")]),_v(" "),_c('td',[_v("--")])])])])]),_c('p',[_v("We have now provided author details for three different branches in a single repo, using a single row.")]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("The branch specified through the delimiter syntax will take precedence over the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Branch")]),_v(" column.")])]),_v(" "),_c('h2',{attrs:{"id":"using-github-branch-url-as-repository-s-location"}},[_v("Using GitHub branch URL as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repository's Location")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#using-github-branch-url-as-repository-s-location","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("We can also use GitHub branch URL as copied from the address bar directly, to be able to quickly use the URL to specify the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repository's Location")]),_v(" and a specific "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Branch")]),_v(" at the same time.")]),_v(" "),_c('p',[_v("Below is an example:")]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Repository's Location")]),_v(" "),_c('th',[_v("Branch")]),_v(" "),_c('th',[_v("Author's Git Host ID")]),_v(" "),_c('th',[_v("... Hidden columns")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://github.com/reposense/RepoSense/tree/release")])]),_v(" "),_c('td'),_v(" "),_c('td',[_v("sikai00")]),_v(" "),_c('td',[_v("--")])])])])]),_c('p',[_v("There is no need to specify the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Branch")]),_v(" column now, as we have specified it through the GitHub branch URL.")]),_v(" "),_c('box',{attrs:{"type":"warning","seamless":""}},[_c('p',[_v("GitLab and BitBucket branch URL are not supported at the moment.")])]),_v(" "),_c('h2',{attrs:{"id":"combining-the-advanced-syntax"}},[_v("Combining the advanced syntax"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#combining-the-advanced-syntax","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("It is possible to combine the above-mentioned advanced syntax. By doing so, we can go from:")]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Repository's Location")]),_v(" "),_c('th',[_v("Branch")]),_v(" "),_c('th',[_v("Author's Git Host ID")]),_v(" "),_c('th',[_v("... Hidden columns")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://github.com/MarkBind/markbind/tree/vue3-migration")])]),_v(" "),_c('td'),_v(" "),_c('td',[_v("sikai00")]),_v(" "),_c('td',[_v("--")])]),_v(" "),_c('tr',[_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://github.com/reposense/RepoSense.git")])]),_v(" "),_c('td',[_v("master")]),_v(" "),_c('td',[_v("sikai00")]),_v(" "),_c('td',[_v("--")])]),_v(" "),_c('tr',[_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://github.com/reposense/RepoSense.git")])]),_v(" "),_c('td',[_v("cypress")]),_v(" "),_c('td',[_v("sikai00")]),_v(" "),_c('td',[_v("--")])])])])]),_c('p',[_v("to:")]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Repository's Location")]),_v(" "),_c('th',[_v("Branch")]),_v(" "),_c('th',[_v("Author's Git Host ID")]),_v(" "),_c('th',[_v("... Hidden columns")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://github.com/MarkBind/markbind/tree/vue3-migration;https://github.com/reposense/RepoSense.git~master|cypress")])]),_v(" "),_c('td'),_v(" "),_c('td',[_v("sikai00")]),_v(" "),_c('td',[_v("--")])])])])]),_c('br')],1)])],1),_v(" "),_c('p'),_v(" "),_c('h2',{attrs:{"id":"group-config-csv"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("group-config.csv")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#group-config-csv","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Optionally, you can provide a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("group-config.csv")]),_v("(which should be in the same directory as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(" file) to provide details on any custom groupings for files in specified repositories ("),_c('a',{attrs:{"href":"/RepoSense/ug/group-config.csv"}},[_v("example")]),_v("). It should contain the following columns:")]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Column Name")]),_v(" "),_c('th',[_v("Explanation")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_v("Repository's Location")]),_v(" "),_c('td',[_v("Same as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(". Default: all the repos in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")])])]),_v(" "),_c('tr',[_c('td',[_v("Group Name "),_c('span',{staticClass:"badge bg-danger"},[_v("mandatory")])]),_v(" "),_c('td',[_v("Name of the group, e.g.,"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("test")]),_v(".")])]),_v(" "),_c('tr',[_c('td',[_v("Globs * "),_c('span',{staticClass:"badge bg-danger"},[_v("mandatory")])]),_v(" "),_c('td',[_v("The list of file path globs to include for specified group, e.g.,"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("**/test/*;**.java")]),_v(".")])])])])]),_c('p',[_c('sup',[_v("* "),_c('strong',[_v("Multi-value column")]),_v(": multiple values can be entered in this column using a semicolon "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(";")]),_v(" as the separator.")])]),_v(" "),_c('p',[_v("Note that a file in a given repository should only be tagged to one group. "),_c('br'),_v("\ne.g.: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("example.java")]),_v(" in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("example-repo")]),_v(" can either be in the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("test")]),_v(" group or the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("code")]),_v(" group, but not in both "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("test")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("code")]),_v(" group. If multiple groups are specified for a given file, the latter group (i.e., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("code")]),_v(" group) is set for the file.")]),_v(" "),_c('h2',{attrs:{"id":"report-config-json"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("report-config.json")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#report-config-json","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("You can optionally use "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("report-config.json")]),_v(" to customize report generation by providing the following information. ("),_c('a',{attrs:{"href":"/RepoSense/ug/report-config.json"}},[_v("example")]),_v(")")]),_v(" "),_c('p',[_c('strong',[_v("Fields to provide")]),_v(":")]),_v(" "),_c('ul',[_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("title")]),_v(": Title of the generated report, which is also the title of the deployed dashboard. Default: \"RepoSense Report\"")])]),_v(" "),_c('div',{attrs:{"id":"section-standalone"}},[_c('h2',{attrs:{"id":"config-json-standalone-config-file"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("config.json")]),_v(" (standalone config file)"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#config-json-standalone-config-file","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Repo owners can provide the following additional information to RepoSense using a config file that we call the "),_c('strong',[_c('em',[_v("standalone config file")])]),_v(":")]),_v(" "),_c('ul',[_c('li',[_v("which files/authors/commits to analyze/omit")]),_v(" "),_c('li',[_v("which git and git host usernames belong to which authors")]),_v(" "),_c('li',[_v("the display of an author")])]),_v(" "),_c('p',[_v("To use this feature, add a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("_reposense/config.json")]),_v(" to the root of your repo using the format in the example below ("),_c('a',{attrs:{"href":"https://github.com/reposense/RepoSense/blob/master/_reposense/config.json"}},[_v("another example")]),_v(") and "),_c('strong',[_v("commit it")]),_v(" (reason: RepoSense can see committed code only):")]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"no-line-numbers hljs json"}},[_c('span',[_v("{\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"ignoreGlobList\"")]),_v(": ["),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"about-us/**\"")]),_v(", "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"**index.html\"")]),_v("],\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"formats\"")]),_v(": ["),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"html\"")]),_v(", "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"css\"")]),_v("],\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"ignoreCommitList\"")]),_v(": ["),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"90018e49f129ce7e0abdc8b18e91c9813588c601\"")]),_v(", "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"67890def\"")]),_v(", "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"abc123..def456\"")]),_v("],\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"ignoreAuthorList\"")]),_v(": ["),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"charlie\"")]),_v("],\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"authors\"")]),_v(":\n")]),_c('span',[_v(" [\n")]),_c('span',[_v(" {\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"gitId\"")]),_v(": "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"alice\"")]),_v(",\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"emails\"")]),_v(": ["),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"alice@example.com\"")]),_v(", "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"alicet@example.com\"")]),_v("],\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"displayName\"")]),_v(": "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"Alice T.\"")]),_v(",\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"authorNames\"")]),_v(": ["),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"AT\"")]),_v(", "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"A\"")]),_v("],\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"ignoreGlobList\"")]),_v(": ["),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"**.css\"")]),_v("]\n")]),_c('span',[_v(" },\n")]),_c('span',[_v(" {\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"gitId\"")]),_v(": "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"bob\"")]),_v("\n")]),_c('span',[_v(" }\n")]),_c('span',[_v(" ]\n")]),_c('span',[_v("}\n")])])]),_c('p',[_v("Note: all fields are optional unless specified otherwise.")]),_v(" "),_c('p',[_c('strong',[_v("Fields to provide "),_c('em',[_v("repository-level")]),_v(" info")]),_v(":")]),_v(" "),_c('ul',[_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ignoreGlobList")]),_v(": Folders/files to ignore, specified using the "),_c('a',{attrs:{"href":"https://docs.oracle.com/javase/tutorial/essential/io/fileOps.html#glob"}},[_c('em',[_v("glob format")])]),_v(".")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("formats")]),_v(": File formats to analyze. Binary file formats, such as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("png")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("jpg")]),_v(", will be automatically labelled as the file type "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("binary")]),_v(" in the generated report. Default: all file formats")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ignoreCommitList")]),_v(": The list of commits to ignore during analysis. For accurate results, the commits should be provided with their full hash. Additionally, a range of commits can be specified using the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("..")]),_v(" notation e.g. "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("abc123..def456")]),_v(" (both inclusive).")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ignoreAuthorList")]),_v(": The list of authors to ignore during analysis. Authors specified in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("authors")]),_v(" field or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(" will be also be omitted if they are in this list. Authors should be specified by their "),_c('a',{attrs:{"href":"#a-note-about-git-author-name"}},[_v("Git Author Name")]),_v(".")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("fileSizeLimit")]),_v(": A file size limit for the repository in bytes as a single number without units, that will override the default file size limit. If not specified, the default file size limit will continue to be used.")])]),_v(" "),_c('p',[_c('strong',[_v("Fields to provide "),_c('em',[_v("author-level")]),_v(" info")]),_v(":"),_c('br'),_v("\nNote: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("authors")]),_v(" field should contain "),_c('em',[_v("all")]),_v(" authors that should be captured in the analysis.")]),_v(" "),_c('ul',[_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("gitId")]),_v(": Username of the author. "),_c('span',{staticClass:"badge bg-danger"},[_v("mandatory")]),_v(" field.")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("emails")]),_v(": Associated git emails of the author. For GitHub, this can be found in your "),_c('a',{attrs:{"href":"https://github.com/settings/emails"}},[_v("GitHub settings")]),_v(".")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("displayName")]),_v(": Name to display on the report for this author.")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("authorNames")]),_v(": Git Author Name(s) used in the author's commits. By default, RepoSense assumes an author would use their remote Git Host username as the Git username too. The meaning of "),_c('em',[_v("Git Author Name")]),_v(" is explained in "),_c('a',{attrs:{"href":"#a-note-about-git-author-name"}},[_c('em',[_v("A note about git author name")])]),_v(".")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ignoreGlobList")]),_v(": "),_c('em',[_v("Additional")]),_v(" (i.e. on top of the repo-level "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ignoreGlobList")]),_v(") folders/files to ignore for a specific author. The path glob syntax is specified by the "),_c('a',{attrs:{"href":"https://docs.oracle.com/javase/tutorial/essential/io/fileOps.html#glob"}},[_c('em',[_v("glob format")])]),_v(". In the example above, the actual "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ignoreGlobList")]),_v(" for "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("alice")]),_v(" would be "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("[\"about-us/**\", \"**index.html\", \"**.css\"]")]),_v(".")])]),_v(" "),_c('p',[_v("To verify your standalone configuration is as intended, add the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("_reposense/config.json")]),_v(" to your local copy of repo and run RepoSense against it as follows:"),_c('br')]),_v(" "),_c('ul',[_c('li',[_v("Format: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar --repo LOCAL_REPO_LOCATION")]),_v(" "),_c('br')]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar --repo c:/myRepose/foo/bar")]),_c('br'),_v("\nAfter that, view the report to see if the configuration you specified in the config file is being reflected correctly in the report.")])]),_v(" "),_c('h2',{attrs:{"id":"a-note-about-git-author-name"}},[_v("A note about git author name"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#a-note-about-git-author-name","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Git Author Name")]),_v(" refers to the customizable author's display name set in the local "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(".gitconfig")]),_v(" file. For example, in the Git Log's display:")]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"no-line-numbers hljs"}},[_c('span',[_v("...\n")]),_c('span',[_v("commit cd7f610e0becbdf331d5231887d8010a689f87c7\n")]),_c('span',[_v("Author: ConfiguredAuthorName \n")]),_c('span',[_v("Date: Fri Feb 9 19:14:41 2018 +0800\n")]),_c('span',[_v("\n")]),_c('span',[_v(" Make some changes to show my new author's name\n")]),_c('span',[_v("\n")]),_c('span',[_v("commit e3f699fd4ef128eebce98d5b4e5b3bb06a512f49\n")]),_c('span',[_v("Author: ActualGitHostId \n")]),_c('span',[_v("Date: Fri Feb 9 19:13:13 2018 +0800\n")]),_c('span',[_v("\n")]),_c('span',[_v(" Initial commit\n")]),_c('span',[_v(" ...\n")])])]),_c('p',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ActualGitHostId")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ConfiguredAuthorName")]),_v(" are both "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Git Author Name")]),_v(" of the same author."),_c('br'),_v("\nTo find the author name that you are currently using for your current git repository, run the following command within your git repository:")]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"no-line-numbers hljs"}},[_c('span',[_v("git config user.name\n")])])]),_c('p',[_v("To set the author name to the value you want (e.g., to set it to your GitHub username) for your current git repository, you can use the following command ("),_c('a',{attrs:{"href":"https://www.git-tower.com/learn/git/faq/change-author-name-email"}},[_v("more info")]),_v("):")]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"no-line-numbers hljs"}},[_c('span',[_v("git config user.name \"YOUR_AUTHOR_NAME”\n")])])]),_c('p',[_v("To set the author name to use a default value you want for future git repositories, you can use the following command:")]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"no-line-numbers hljs"}},[_c('span',[_v("git config --global user.name \"YOUR_AUTHOR_NAME”\n")])])]),_c('p',[_v("RepoSense expects the Git Author Name to be the same as author's username on the Git hosting platform (GitHub, GitLab, BitBucket). If an author's "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Git Author Name")]),_v(" is different from their username on the Git hosting platform, the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Git Author Name")]),_v(" needs to be specified in the standalone config file. If the author has more than one "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Git Author Name")]),_v(", multiple values can be entered too.")]),_v(" "),_c('box',{attrs:{"type":"warning","seamless":""}},[_c('p',[_v("Note: Symbols such as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("\"")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("!")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("/")]),_v(" etc. in your author name will be omitted, which may reduce the accuracy of the analysis if 2 names in the repository are approximately similar.")])])],1),_v(" "),_c('div',{attrs:{"id":"section-blurbs"}},[_c('h2',{attrs:{"id":"blurbs-md"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("blurbs.md")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#blurbs-md","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("You can optionally use "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("blurbs.md")]),_v(" to add blurbs in Markdown syntax for repository branches. These blurbs will be seen when grouping by "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repo/Branch")]),_v(". ("),_c('a',{attrs:{"href":"https://github.com/reposense/RepoSense/blob/master/docs/ug/blurbs.md"}},[_v("example")]),_v(")")]),_v(" "),_c('p',[_c('strong',[_v("Format")]),_v(":")]),_v(" "),_c('ul',[_c('li',[_v("First line in section: Link to the repository branch.")]),_v(" "),_c('li',[_v("Second line onwards: Blurb content.")]),_v(" "),_c('li',[_v("Delimiter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("")]),_v(". Everything on the line after the delimiter will be ignored.")])])])],1)])],1),_v(" "),_c('p')]),_v(" "),_m(15),_v(" "),_m(16),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("It takes a few minutes for report generation. Meanwhile, you can monitor the progress live at "),_c('a',{attrs:{"href":"https://travis-ci.org/dashboard/builds"}},[_v("Travis-CI's Builds")]),_v(".")])])],1),_v(" "),_m(17),_v(" "),_m(18),_v(" "),_m(19),_v(" "),_m(20),_v(" "),_m(21)])],1),_v(" "),_m(22)])} +with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"fixed":""}},[_c('navbar',{attrs:{"type":"dark"},scopedSlots:_u([{key:"brand",fn:function(){return [_c('a',{staticClass:"navbar-brand",attrs:{"href":"/index.html","title":"Home"}},[_c('img',{attrs:{"width":"30px","src":"/favicon.ico"}})])]},proxy:true},{key:"right",fn:function(){return [_c('li',[_c('form',{staticClass:"navbar-form"},[_c('searchbar',{attrs:{"data":searchData,"placeholder":"Search","on-hit":searchCallback,"menu-align-right":""}})],1)])]},proxy:true}])},[_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/index.html"}},[_v("HOME")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/showcase.html"}},[_v("SHOWCASE")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/ug/index.html"}},[_v("USER GUIDE")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/dg/index.html"}},[_v("DEVELOPER GUIDE")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/about.html"}},[_v("ABOUT")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/contact.html"}},[_v("CONTACT")])]),_v(" "),_c('li',{attrs:{"tags":"dev"}},[_c('a',{staticClass:"nav-link",attrs:{"href":"https://reposense.org","target":"_blank"}},[_c('span',[_c('span',{staticClass:"fas fa-external-link-alt",attrs:{"aria-hidden":"true"}}),_v(" PRODUCTION SITE")])])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"https://github.com/RepoSense/reposense","target":"_blank"}},[_c('span',[_c('span',{staticClass:"fab fa-github",attrs:{"aria-hidden":"true"}})])])])]),_v(" "),_m(0)],1),_v(" "),_c('div',{attrs:{"id":"flex-body"}},[_c('overlay-source',{staticClass:"fixed-header-padding",attrs:{"id":"site-nav","tag-name":"nav","to":"site-nav"}},[_c('div',{staticClass:"site-nav-top"},[_c('div',{staticClass:"font-weight-bold mb-2",staticStyle:{"font-size":"1.25rem"}},[_c('span',[_c('strong',[_c('strong',[_v("USER GUIDE")])])])])]),_v(" "),_c('div',{staticClass:"nav-component slim-scroll"},[_c('div',[_c('site-nav',[_c('overlay-source',{staticClass:"site-nav-list site-nav-list-root",attrs:{"tag-name":"ul","to":"mb-site-nav"}},[_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/index.html"}},[_c('strong',[_v("Overview")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/generatingReports.html"}},[_c('strong',[_v("Generating reports")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/usingReports.html"}},[_c('strong',[_v("Using reports")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/customizingReports.html"}},[_c('strong',[_v("Customizing reports")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/sharingReports.html"}},[_c('strong',[_v("Sharing reports")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('strong',[_v("Appendices")]),_v(" "),_c('div',{staticClass:"site-nav-dropdown-btn-container"},[_c('i',{staticClass:"site-nav-dropdown-btn-icon site-nav-rotate-icon",attrs:{"onclick":"handleSiteNavClick(this.parentNode.parentNode, false); event.stopPropagation();"}},[_c('span',{staticClass:"glyphicon glyphicon-menu-down",attrs:{"aria-hidden":"true"}})])])]),_c('ul',{staticClass:"site-nav-dropdown-container site-nav-dropdown-container-open site-nav-list"},[_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/cli.html"}},[_v("CLI syntax reference")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/configFiles.html"}},[_v("Config files format")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/authorConfigSyntax.html"}},[_v("Advanced syntax: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/usingAuthorTags.html"}},[_v("Using "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("@@author")]),_v(" tags")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/withNetlify.html"}},[_v("RepoSense with Netlify")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/withGithubActions.html"}},[_v("RepoSense with GitHub Actions")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/withTravis.html"}},[_v("RepoSense with Travis")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/runSh.html"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("run.sh")]),_v(" format")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/faq.html"}},[_v("FAQ")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/RepoSense/ug/troubleshooting.html"}},[_v("Troubleshooting")])])])])])])],1)],1)])]),_v(" "),_c('div',{staticClass:"fixed-header-padding",attrs:{"id":"content-wrapper"}},[_m(1),_v(" "),_c('div',{attrs:{"id":"section-setting-up"}},[_m(2),_v(" "),_m(3),_v(" "),_c('div',{attrs:{"id":"section-fork-token"}},[_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("The instructions below assume you are using GitHub pages to host your report.")])]),_v(" "),_m(4)],1),_v(" "),_m(5),_v(" "),_c('div',{staticClass:"indented-level0"},[_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('span',[_c('span',{staticClass:"glyphicon glyphicon-log-in",attrs:{"aria-hidden":"true"}})]),_v(" Granting write access on GitHub")])]},proxy:true}])},[_v(" "),_c('div',[_c('h2',{attrs:{"id":"granting-write-access-to-a-repository"}},[_v("Granting write-access to a repository"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#granting-write-access-to-a-repository","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("We recommend using a "),_c('a',{attrs:{"href":"https://github.blog/2013-05-16-personal-api-tokens/"}},[_v("personal access token")]),_v(" if aiming for the ease of setup and "),_c('a',{attrs:{"href":"https://developer.github.com/v3/guides/managing-deploy-keys/#deploy-keys"}},[_v("deploy key")]),_v(" if aiming for enhanced security.")]),_v(" "),_c('h3',{attrs:{"id":"if-you-wish-to-use-personal-access-token"}},[_v("If you wish to use "),_c('em',[_v("personal access token")]),_v(":"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#if-you-wish-to-use-personal-access-token","onclick":"event.stopPropagation()"}})]),_v(" "),_c('ol',[_c('li',[_c('strong',[_v("Create a "),_c('em',[_v("personal access token")])]),_v(" by following this "),_c('a',{attrs:{"href":"https://help.github.com/articles/creating-a-personal-access-token-for-the-command-line/"}},[_v("guide")]),_v(" and give only "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("public_repo")]),_v(" permission.")]),_v(" "),_c('li',[_c('strong',[_v("Copy the token")]),_v(" for later use.")])]),_v(" "),_c('h3',{attrs:{"id":"if-you-wish-to-use-deploy-key"}},[_v("If you wish to use "),_c('em',[_v("deploy key")]),_v(":"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#if-you-wish-to-use-deploy-key","onclick":"event.stopPropagation()"}})]),_v(" "),_c('box',{attrs:{"type":"info"},scopedSlots:_u([{key:"icon",fn:function(){return [_c('span',{staticClass:"fab fa-windows",attrs:{"aria-hidden":"true"}})]},proxy:true}])},[_v(" "),_c('p',[_v("[Windows users] "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ssh-keygen")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("base64")]),_v(" are accessible using "),_c('a',{attrs:{"href":"https://gitforwindows.org/"}},[_v("Git Bash")]),_v(".")])]),_v(" "),_c('ol',[_c('li',[_c('strong',[_v("Create a public-private key pair")]),_v(" (without a passphrase) using the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ssh-keygen")]),_v(". "),_c('br'),_v("\ni.e., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ssh-keygen -t ecdsa -b 521 -f id_reposense -q -N \"\"")])]),_v(" "),_c('li',[_c('strong',[_v("Create a deploy key")]),_v(" as follows:\n"),_c('ol',[_c('li',[_v("Go to the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("settings")]),_v(" page of your publish-RepoSense fork")]),_v(" "),_c('li',[_v("Click on the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Deploy keys")]),_v(" item in the navigation menu in that page")]),_v(" "),_c('li',[_v("Click on the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Add deploy key")]),_v(" button and create a new deploy key with the contents of "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("id_reposense.pub")]),_v(".")])])]),_v(" "),_c('li',[_c('strong',[_v("Copy the private key")]),_v(" in base64 encoded format for later use. "),_c('br'),_v("\ni.e., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("cat id_reposense | base64 -w 0")])])])],1)])],1),_v(" "),_c('p'),_v(" "),_m(6),_v(" "),_m(7),_v(" "),_m(8),_v(" "),_m(9),_v(" "),_m(10),_v(" "),_m(11),_v(" "),_m(12),_v(" "),_m(13),_v(" "),_c('span',{attrs:{"id":"section-edit-configs"}},[_m(14),_v(" "),_c('div',{staticClass:"indented-level0"},[_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('span',[_c('span',{staticClass:"glyphicon glyphicon-log-in",attrs:{"aria-hidden":"true"}})]),_v(" Appendix: "),_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("run.sh")]),_v(" format")])])]},proxy:true}])},[_v(" "),_c('div',[_c('h1',{staticClass:"display-4",attrs:{"id":"appendix-run-sh-format"}},[_c('span',[_v("Appendix: run.sh format")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#appendix-run-sh-format","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{staticClass:"lead"},[_c('p',[_c('a',{attrs:{"href":"https://github.com/reposense/publish-RepoSense/blob/master/run.sh"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("run.sh")])]),_v(" is a script used for automating RepoSense report generation.")])]),_v(" "),_c('h3',{attrs:{"id":"customizing-the-reposense-command"}},[_v("Customizing the RepoSense command"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#customizing-the-reposense-command","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("You can update the RepoSense command (i.e., the last line) in the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("run.sh")]),_v(" to match your needs.")]),_v(" "),_c('div',{staticClass:"indented-level0"},[_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('span',[_c('span',{staticClass:"glyphicon glyphicon-log-in",attrs:{"aria-hidden":"true"}})]),_v(" Appendix: "),_c('strong',[_v("CLI syntax reference")])])]},proxy:true}])},[_v(" "),_c('div',[_c('h1',{staticClass:"display-4",attrs:{"id":"appendix-cli-syntax-reference"}},[_c('span',[_v("Appendix: CLI syntax reference")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#appendix-cli-syntax-reference","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{staticClass:"lead"},[_c('p',[_v("The command "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar")]),_v(" takes several flags.")])]),_v(" "),_c('box',[_c('p',[_c('strong',[_v("Examples")]),_v(":")]),_v(" "),_c('p',[_v("An example of a command using most parameters:"),_c('br'),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar --repos https://github.com/reposense/RepoSense.git --output ./report_folder --since 31/1/2017 --until 31/12/2018 --formats java adoc xml --view --ignore-standalone-config --last-modified-date --timezone UTC+08 --find-previous-authors --analyze-authorship --originality-threshold 0.66")])]),_v(" "),_c('p',[_v("Same command as above but using most parameters in alias format:"),_c('br'),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar -r https://github.com/reposense/RepoSense.git -o ./report_folder -s 31/1/2017 -u 31/12/2018 -f java adoc xml -v -i -l -t UTC+08 -F -A -ot 0.66")])])]),_v(" "),_c('p',[_v("The section below provides explanations for each of the flags.")]),_v(" "),_c('h3',{attrs:{"id":"analyze-authorship-a"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--analyze-authorship")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-A")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#analyze-authorship-a","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--analyze-authorship")])]),_v(": Performs further analysis to distinguish between partial and full credit attribution for\nlines of code assigned to the author.")]),_v(" "),_c('ul',[_c('li',[_v("Default: this feature is turned "),_c('em',[_c('strong',[_v("off")])]),_v(" by default and the author will receive partial credits for all lines of\ncode, as the code lines are at least partial credit but may not qualify for full credit.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-A")]),_v(" (upper case)")]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--analyze-authorship")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-A")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("A darker background colour represents full credit, while a lighter background colour represents partial credit.")]),_v(" "),_c('p',[_v("If the code is attributed to a different author by the user via "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("@@author")]),_v(" tag, then the new author will be given\npartial credit.")])]),_v(" "),_c('h3',{attrs:{"id":"assets-a"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--assets")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-a")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#assets-a","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{attrs:{"id":"section-assets"}},[_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--assets ASSETS_DIRECTORY")])]),_v(": Specifies where to place assets for report generation.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ASSETS_DIRECTORY")]),_v(" The directory containing the assets files. A "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("favicon.ico")]),_v(" file can be placed here to customize the favicon of the dashboard, while a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("title.md")]),_v(" file can be placed to customize the "),_c('a',{attrs:{"href":"https://reposense.org/ug/customizingReports.html#add-a-title"}},[_v("title")]),_v(" of the report using "),_c('a',{attrs:{"href":"https://www.markdownguide.org/basic-syntax/"}},[_v("Markdown syntax")]),_v(".")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-a")])]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--assets ./assets")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-a ./assets")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("If "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--assets")]),_v(" is not specified, RepoSense looks for assets in the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./assets")]),_v(" directory.")])])])],1),_v(" "),_c('h3',{attrs:{"id":"config-c"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--config")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-c")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#config-c","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{attrs:{"id":"section-config"}},[_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--config CONFIG_DIRECTORY")])]),_v(": Specifies that config files located in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("CONFIG_DIRECTORY")]),_v(" should be used to customize the report.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("CONFIG_DIRECTORY")]),_v(" The directory containing the config files. Should contain a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(" file. Optionally, can contain an "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(" file or/and a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("group-config.csv")]),_v(" file or/and a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("report-config.json")]),_v(" file or/and a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("blurbs.md")]),_v(" file.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-c")])]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar --config ./config")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("Cannot be used with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repos")]),_v(". The "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repos")]),_v(" flag will take precedence over this flag.")]),_v(" "),_c('li',[_v("If both "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repos")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--config")]),_v(" are not specified, RepoSense looks for config files in the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./config")]),_v(" directory.")]),_v(" "),_c('li',[_v("Config files must follow "),_c('a',{attrs:{"href":"/RepoSense/ug/configFiles.html"}},[_v("this")]),_v(" format.")])])])],1),_v(" "),_c('h3',{attrs:{"id":"formats-f"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--formats")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-f")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#formats-f","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--formats LIST_OF_FORMATS")])]),_v(": Specifies which file extensions to be included in the analysis.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("LIST_OF_FORMATS")]),_v(" A space-separated list of file extensions that should be included in the analysis."),_c('br'),_v("\nDefault: all file formats")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-f")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--formats css fxml gradle")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-f css fxml gradle")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Binary file formats, such as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("jpg")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("png")]),_v(","),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("exe")]),_v(","),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("zip")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("rar")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("docx")]),_v(", and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("pptx")]),_v(", all will be labelled as the file type "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("binary")]),_v(" in the generated report.")])]),_v(" "),_c('h3',{attrs:{"id":"find-previous-authors-f"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--find-previous-authors")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-F")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#find-previous-authors-f","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--find-previous-authors")])]),_v(": Utilizes Git blame's ignore revisions functionality, RepoSense will attempt to blame the line changes caused by commits in the ignore commit list to the previous authors who altered those lines (if available).")]),_v(" "),_c('ul',[_c('li',[_v("Default: RepoSense will assume that no authors are responsible for the code changes in the lines altered by commits in the ignore commit list.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-F")]),_v(" (uppercase F)")]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--find-previous-authors")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-F")])])]),_v(" "),_c('h3',{attrs:{"id":"help-h"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--help")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-h")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#help-h","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--help")])]),_v(": Shows the help message.")]),_v(" "),_c('ul',[_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-h")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Cannot be used with any other flags. This flag takes precedence over all other flags.")])]),_v(" "),_c('h3',{attrs:{"id":"ignore-standalone-config-i"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--ignore-standalone-config")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-i")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#ignore-standalone-config-i","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--ignore-standalone-config")])]),_v(": Specifies that the standalone config file in the repo should be ignored.")]),_v(" "),_c('ul',[_c('li',[_v("Default: the standalone config file is not ignored")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-i")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--ignore-standalone-config")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-i")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("This flag overrides the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Ignore standalone config")]),_v(" field in the CSV config file.")])]),_v(" "),_c('h3',{attrs:{"id":"ignore-filesize-limit-i"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--ignore-filesize-limit")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-I")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#ignore-filesize-limit-i","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--ignore-filesize-limit")])]),_v(": Specifies that the file size limit (both default and user-defined) should be ignored during the analysis.")]),_v(" "),_c('ul',[_c('li',[_v("Default: the file size limit is not ignored")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-I")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--ignore-filesize-limit")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-I")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("All files are subject to a default file size limit or a custom size limit set by the user. Most files should not be\naffected by the default size limit. This flag can be useful for including files in your report that are affected by\nthe size limit. Note that this flag may result in large report sizes and/or slower report generation.")])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("This flag overrides the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Ignore file size limit")]),_v(" field in the CSV config file.")])]),_v(" "),_c('h3',{attrs:{"id":"last-modified-date-l"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--last-modified-date")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-l")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#last-modified-date-l","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--last-modified-date")])]),_v(": Specifies that the last modified date of each line of code should be added to "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("authorship.json")]),_v(".")]),_v(" "),_c('ul',[_c('li',[_v("Default: the last modified date of each line of code will not be added to "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("authorship.json")])]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-l")]),_v(" (lowercase L)")]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--last-modified-date")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-l")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("Cannot be used with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--shallow-cloning")]),_v(". This may result in an incorrect last modified date.")]),_v(" "),_c('li',[_v("The last modified dates will be in the same timezone specified with the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--timezone")]),_v(" flag.")])])]),_v(" "),_c('h3',{attrs:{"id":"originality-threshold-ot"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--originality-threshold")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-ot")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#originality-threshold-ot","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--originality-threshold [VALUE]")])]),_v(": Specifies the cut-off point for partial and full credit\nin "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--analyze-authorship")]),_v(". Author will be given full credit if their contribution exceeds this threshold, else partial\ncredit is given.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("VALUE")]),_v(" Optional. Acceptable range: [0.0, 1.0]."),_c('br'),_v("\nDefault: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("0.51")])]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-ot")])]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--originality-threshold 0.66")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-ot 0.66")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("Requires "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--analyze-authorship")]),_v(" flag.")]),_v(" "),_c('li',[_v("An author's contribution, or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("originality score")]),_v(", is calculated using Levenshtein Distance (Edit Distance) algorithm.\nWe compare the difference between current code line and its previous versions.")])])]),_v(" "),_c('h3',{attrs:{"id":"output-o"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--output")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-o")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#output-o","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--output OUTPUT_DIRECTORY")])]),_v(": Indicates where to save the report generated.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("OUTPUT_DIRECTORY")]),_v(" The location for the generated "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("reposense-report")]),_v(" folder."),_c('br'),_v("\nDefault: current directory")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-o")])]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--output ./foo")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-o ./foo")]),_v(" (the report will be in the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./foo/reposense-report")]),_v(" folder)")])]),_v(" "),_c('h3',{attrs:{"id":"period-p"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--period")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-p")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#period-p","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--period PERIOD")])]),_v(": Specifies the period of analysis window.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("PERIOD")]),_v(" The period of analysis window, in the format "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("nd")]),_v(" (for n days) or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("nw")]),_v(" (for n weeks). It is used to calculate end date if only start date is specified, or calculate end date if only start date is specified.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-p")])]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--period 30d")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--period 4w")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("If both start date and end date are not specified, the date of generating the report will be taken as the end date.")]),_v(" "),_c('li',[_v("May analyze the incorrect date range if used with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since d1")]),_v(". The program will throw a warning.")]),_v(" "),_c('li',[_v("Cannot be used with both "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--until")]),_v(". The program will throw an exception.")])])]),_v(" "),_c('h3',{attrs:{"id":"repo-repos-r"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repo")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repos")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-r")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#repo-repos-r","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repo REPO_LOCATION")])]),_v(": Specifies which repositories to analyze.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("REPO_LOCATION")]),_v(" A list of URLs or the disk location of the git repositories to analyze, separated by spaces.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-r")])]),_v(" "),_c('li',[_v("Examples:\n"),_c('ul',[_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repos https://github.com/reposense/RepoSense.git")])]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--repo https://github.com/reposense/RepoSense.git c:/myRepose/foo/bar")]),_v(": analyzes the two specified repos (one remote, one local) and generates one report containing details of both.")])])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Cannot be used with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--config")]),_v(". This flag takes precedence over "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--config")]),_v(".")])]),_v(" "),_c('h3',{attrs:{"id":"shallow-cloning-s"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--shallow-cloning")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-S")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#shallow-cloning-s","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--shallow-cloning")])]),_v(": Clones repositories using Git's shallow cloning functionality, which can significantly reduce the time taken to clone large repositories. However, the flag should not be used for smaller repositories where the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(".git")]),_v(" file is smaller than 500 MB, as it would create overhead.")]),_v(" "),_c('ul',[_c('li',[_v("Default: RepoSense does not clone repositories using Git's shallow cloning functionality.")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-S")]),_v(" (uppercase S)")]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--shallow-cloning")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-S")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Cannot be used with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--last-modified-date")]),_v(". This may result in an incorrect last modified date.")])]),_v(" "),_c('h3',{attrs:{"id":"since-s"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-s")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#since-s","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since START_DATE")])]),_v(": Specifies the start date for the period to be analyzed.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("START_DATE")]),_v(" The first day of the period to be analyzed, in the format "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("DD/MM/YYYY")]),_v("."),_c('br'),_v("\nDefault: one month before the current date")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-s")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since 21/10/2017")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-s 21/10/2017")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('ul',[_c('li',[_v("If the start date is not specified, only commits made one month before the end date (if specified) or the date of generating the report, will be captured and analyzed.")]),_v(" "),_c('li',[_v("If "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("d1")]),_v(" is specified as the start date ("),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--since d1")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-s d1")]),_v("), then the program will search for the earliest commit date of all repositories and use that as the start date.")]),_v(" "),_c('li',[_v("If "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("d1")]),_v(" is specified together with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--period")]),_v(", then the program will warn that the date range being analyzed may be incorrect.")])])]),_v(" "),_c('h3',{attrs:{"id":"timezone-t"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--timezone")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-t")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#timezone-t","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--timezone ZONE_ID")])]),_v(": Indicates the timezone to be used for the analysis.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ZONE_ID")]),_v(" The timezone in the format "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ZONE_ID[±hh[mm]]")]),_v("."),_c('br'),_v("\nDefault: system's default timezone")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-t")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--timezone UTC+08")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-t UTC-1030")])])]),_v(" "),_c('h3',{attrs:{"id":"until-u"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--until")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-u")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#until-u","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--until END_DATE")])]),_v(": Specifies the end date of the analysis period.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("END_DATE")]),_v(" The last date of the period to be analyzed, in the format "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("DD/MM/YYYY")]),_v("."),_c('br'),_v("\nDefault: current date")]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-u")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--until 21/10/2017")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-u 21/10/2017")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Note: If the end date is not specified, the date of generating the report will be taken as the end date.")])]),_v(" "),_c('h3',{attrs:{"id":"version-v"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--version")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-V")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#version-v","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--version")])]),_v(": Shows the version of RepoSense.")]),_v(" "),_c('ul',[_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-V")]),_v(" (upper case)")])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("Cannot be used with any other flags. This flag takes precedence over all other flags other than "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--help")]),_v(".")])]),_v(" "),_c('h3',{attrs:{"id":"view-v"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--view")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-v")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#view-v","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--view [REPORT_FOLDER]")])]),_v(": Specifies that the report should be opened in the default browser.")]),_v(" "),_c('ul',[_c('li',[_v("Parameter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("REPORT_FOLDER")]),_v(" Optional. If specified, no analysis will be performed and the report specified by the argument will be opened."),_c('br'),_v("\nDefault: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./reposense-report")])]),_v(" "),_c('li',[_v("Alias: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-v")])]),_v(" "),_c('li',[_v("Example:"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--view")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-v")])])])],1)])],1),_v(" "),_c('p'),_v(" "),_c('h3',{attrs:{"id":"specifying-which-version-of-reposense-to-use"}},[_v("Specifying which version of RepoSense to use"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#specifying-which-version-of-reposense-to-use","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Depending on which version you wish to use for report generation, add one of the following flags to the line "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./get-reposense.py")]),_v(" in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("run.sh")]),_v(" (e.g., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./get-reposense.py --release")]),_v("):")]),_v(" "),_c('ul',[_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--release")]),_v(": Use the latest release (Stable)")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--master")]),_v(": Use the latest version of the master branch")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--tag TAG")]),_v(" (e.g. "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--tag v1.6.1")]),_v("): Use the version identified by the Git tag given")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--commit COMMIT")]),_v(" (e.g. "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("--commit abc123")]),_v("): Use the version identified by the Git commit SHA given")])])])])],1),_v(" "),_c('p'),_v(" "),_c('div',{staticClass:"indented-level0"},[_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('span',[_c('span',{staticClass:"glyphicon glyphicon-log-in",attrs:{"aria-hidden":"true"}})]),_v(" Appendix: "),_c('strong',[_v("Config files format")])])]},proxy:true}])},[_v(" "),_c('div',[_c('h1',{staticClass:"display-4",attrs:{"id":"appendix-config-files-format"}},[_c('span',[_v("Appendix: Config files format")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#appendix-config-files-format","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{staticClass:"lead"},[_c('p',[_v("Given below are the details of the various config files used by RepoSense.")])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_c('strong',[_v("RepoSense ignores the order of column headers in the CSV config files. However, the spelling of the column headers must match the specified headers exactly, or the column would be ignored by RepoSense.")])])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_c('strong',[_v("A value in a config file is optional to provide unless it is specified as "),_c('span',{staticClass:"badge bg-danger"},[_v("mandatory")])]),_v(".")])]),_v(" "),_c('h2',{attrs:{"id":"repo-config-csv"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#repo-config-csv","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(" file contains repo-level config data.")]),_v(" Each row represents a repository's configuration ("),_c('a',{attrs:{"href":"/RepoSense/ug/repo-config.csv"}},[_v("example")]),_v(").")]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Column Name")]),_v(" "),_c('th',[_v("Explanation")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_v("Repository's Location "),_c('span',{staticClass:"badge bg-danger"},[_v("mandatory")])]),_v(" "),_c('td',[_v("The "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Remote Repo URL")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Disk Path")]),_v(" to the git repository e.g., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://github.com/foo/bar.git")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("C:\\Users\\user\\Desktop\\GitHub\\foo\\bar")])])]),_v(" "),_c('tr',[_c('td',[_v("Branch")]),_v(" "),_c('td',[_v("The branch to analyze in the target repository e.g., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("master")]),_v(". Default: the default branch of the repo")])]),_v(" "),_c('tr',[_c('td',[_v("File formats"),_c('sup',[_v("*+")])]),_v(" "),_c('td',[_v("The file extensions to analyze. Binary file formats, such as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("png")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("jpg")]),_v(", will be automatically labelled as the file type "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("binary")]),_v(" in the generated report. Default: all file formats")])]),_v(" "),_c('tr',[_c('td',[_v("Find Previous Authors")]),_v(" "),_c('td',[_v("Enter "),_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("yes")])]),_v(" to utilize Git blame's ignore revisions functionality, RepoSense will attempt to blame the line changes caused by commits in the ignore commit list to the previous authors who altered those lines (if available).")])]),_v(" "),_c('tr',[_c('td',[_v("Ignore Glob List"),_c('sup',[_v("*+")])]),_v(" "),_c('td',[_v("The list of file path globs to ignore during analysis for each author e.g., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("test/**;temp/**")]),_v(". Refer to the "),_c('a',{attrs:{"href":"https://docs.oracle.com/javase/tutorial/essential/io/fileOps.html#glob"}},[_c('em',[_v("glob format")])]),_v(" for the path glob syntax.")])]),_v(" "),_c('tr',[_c('td',[_v("Ignore standalone config")]),_v(" "),_c('td',[_v("To ignore the standalone config file (if any) in target repository, enter "),_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("yes")])]),_v(". If the cell is empty, the standalone config file in the repo (if any) will take precedence over configurations provided in the csv files.")])]),_v(" "),_c('tr',[_c('td',[_v("Ignore Commits List"),_c('sup',[_v("*+")])]),_v(" "),_c('td',[_v("The list of commits to ignore during analysis. For accurate results, the commits should be provided with their full hash. Additionally, a range of commits can be specified using the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("..")]),_v(" notation e.g. "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("abc123..def456")]),_v(" (both inclusive).")])]),_v(" "),_c('tr',[_c('td',[_v("Ignore Authors List"),_c('sup',[_v("*+")])]),_v(" "),_c('td',[_v("The list of authors to ignore during analysis. Authors should be specified by their "),_c('a',{attrs:{"href":"#a-note-about-git-author-name"}},[_v("Git Author Name")]),_v(".")])]),_v(" "),_c('tr',[_c('td',[_v("Shallow Cloning")]),_v(" "),_c('td',[_v("Enter "),_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("yes")])]),_v(" to clone the repository using Git's shallow cloning functionality. This option can significantly reduce the time taken to clone large repositories. However, the option should ideally be disabled for smaller repositories where the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(".git")]),_v(" file is smaller than 500 MB, as it would create overhead.")])]),_v(" "),_c('tr',[_c('td',[_v("File Size Limit"),_c('sup',[_v("+")])]),_v(" "),_c('td',[_v("Enter a file size limit for the repository in bytes as a single number without units (for a size limit of 1MB for example, enter 1000000). This file size limit will override the default file size limit (500KB). Files exceeding the file size limit will be marked as ignored and only the file name and line count will be reflected in the report.")])]),_v(" "),_c('tr',[_c('td',[_v("Ignore File Size Limit")]),_v(" "),_c('td',[_v("Enter "),_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("yes")])]),_v(" to ignore both the default file size limit and the file size limit possibly set by the user in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(".")])]),_v(" "),_c('tr',[_c('td',[_v("Skip Ignored File Analysis")]),_v(" "),_c('td',[_v("Enter "),_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("yes")])]),_v(" to ignore analysis of files exceeding the file size limit entirely. If file analysis is skipped, all information about the file will be omitted from the generated report. This option can significantly improve report generation time.")])])])])]),_c('box',{attrs:{"type":"info","seamless":""}},[_v("\nThe Shallow Cloning option is incompatible with the \"--last-modified-date\" CLI flag.\n")]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_v("\nIf Ignore File Size Limit is yes, the File Size Limit and Skip Ignored File Analysis columns are ignored.\n")]),_v(" "),_c('p',[_c('sup',[_v("* "),_c('strong',[_v("Multi-value column")]),_v(": multiple values can be entered in this column using a semicolon "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(";")]),_v(" as the separator.")]),_c('br'),_v(" "),_c('sup',[_v("+ "),_c('strong',[_v("Overrideable column")]),_v(": prepend with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("override:")]),_v(" to use entered value(s) instead of value(s) from standalone config.")])]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("When using "),_c('a',{attrs:{"href":"#config-json-standalone-config-file"}},[_v("standalone config")]),_v(" (if it is not ignored), it is possible to override specific values from the standalone config by prepending the entered value with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("override:")]),_v(".")])]),_v(" "),_c('h2',{attrs:{"id":"author-config-csv"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#author-config-csv","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Optionally, you can use an "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(" (which should be in the same directory as the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(" file) to provide more details about the authors to analyze ("),_c('a',{attrs:{"href":"/RepoSense/ug/author-config.csv"}},[_v("example")]),_v("). It should contain the following columns:")]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Column Name")]),_v(" "),_c('th',[_v("Explanation")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_v("Repository's Location"),_c('sup',[_v("*")])]),_v(" "),_c('td',[_v("Same as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(". Default: all the repos in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(".")])]),_v(" "),_c('tr',[_c('td',[_v("Branch")]),_v(" "),_c('td',[_v("The branch to analyze for this author, e.g., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("master")]),_v(". Default: the author will be bound to all the repos in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(" that has the same repo's location, regardless of branch.")])]),_v(" "),_c('tr',[_c('td',[_v("Author's Git Host ID"),_c('sup',[_v("#")]),_v(" "),_c('span',{staticClass:"badge bg-danger"},[_v("mandatory")])]),_v(" "),_c('td',[_v("Username of the target author's profile on GitHub, GitLab or Bitbucket, e.g."),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("JohnDoe")]),_v(".")])]),_v(" "),_c('tr',[_c('td',[_v("Author's Emails"),_c('sup',[_v("*")])]),_v(" "),_c('td',[_v("Associated emails of the author. For GitHub users, this can be found in your "),_c('a',{attrs:{"href":"https://github.com/settings/emails"}},[_v("GitHub settings")]),_v(".")])]),_v(" "),_c('tr',[_c('td',[_v("Author's Display Name")]),_v(" "),_c('td',[_v("The name to display for the author. Default: author's username.")])]),_v(" "),_c('tr',[_c('td',[_v("Author's Git Author Name"),_c('sup',[_v("*")])]),_v(" "),_c('td',[_v("The meaning of "),_c('em',[_v("Git Author Name")]),_v(" is explained in "),_c('a',{attrs:{"href":"#a-note-about-git-author-name"}},[_c('em',[_v("A note about git author name")])]),_v(".")])]),_v(" "),_c('tr',[_c('td',[_v("Ignore Glob List"),_c('sup',[_v("*")])]),_v(" "),_c('td',[_v("Files to ignore for this author, in addition to files ignored by the patterns specified in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(". The path glob syntax is the same as that of Ignore Glob List in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(".")])])])])]),_c('p',[_c('sup',[_v("* "),_c('strong',[_v("Multi-value column")]),_v(": multiple values can be entered in this column using a semicolon "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(";")]),_v(" as the separator.")]),_v(" "),_c('br'),_v(" "),_c('sup',[_v("# For backward compatibility, "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Author's GitHub ID")]),_v(" is still accepted as the header in place of "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Author's Git Host ID")]),_v(".")])]),_v(" "),_c('p',[_v("If "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(" is not given and the repo has not provided author details in a standalone config file, all the authors of the repositories within the date range specified (if any) will be analyzed.")]),_v(" "),_c('p',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(" has some advanced syntax that can help to reduce duplication of the author's information. The syntax guide is given below:")]),_v(" "),_c('div',{staticClass:"indented-level0"},[_c('panel',{attrs:{"minimized":""},scopedSlots:_u([{key:"header",fn:function(){return [_c('p',[_c('span',[_c('span',{staticClass:"glyphicon glyphicon-log-in",attrs:{"aria-hidden":"true"}})]),_v(" Appendix: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(" advanced syntax")])]},proxy:true}])},[_v(" "),_c('div',[_c('h1',{staticClass:"display-4",attrs:{"id":"appendix-author-config-csv-advanced-syntax"}},[_c('span',[_v("Appendix: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(" advanced syntax")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#appendix-author-config-csv-advanced-syntax","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{staticClass:"lead"},[_c('p',[_v("Given below are the advanced syntax available for "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(".")])]),_v(" "),_c('h2',{attrs:{"id":"multiple-repository-s-location-per-author"}},[_v("Multiple "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repository's Location")]),_v(" per author"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#multiple-repository-s-location-per-author","onclick":"event.stopPropagation()"}})]),_v(" "),_c('h4',{attrs:{"id":"specifying-multiple-repository-s-location"}},[_v("Specifying multiple "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repository's Location")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#specifying-multiple-repository-s-location","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("To specify multiple "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repository's Location")]),_v(" in a single row, we can use a semicolon "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(";")]),_v(" as a separator.")]),_v(" "),_c('p',[_v("Below is an example:")]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Repository's Location")]),_v(" "),_c('th',[_v("Branch")]),_v(" "),_c('th',[_v("Author's Git Host ID")]),_v(" "),_c('th',[_v("... Hidden columns")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://github.com/reposense/RepoSense.git;https://github.com/MarkBind/markbind.git")])]),_v(" "),_c('td',[_v("master")]),_v(" "),_c('td',[_v("sikai00")]),_v(" "),_c('td',[_v("--")])])])])]),_c('p',[_v("We have now furnished author details for both repositories in a single row, instead of having two individual rows per "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repository's Location")]),_v(".")]),_v(" "),_c('br'),_v(" "),_c('h4',{attrs:{"id":"specifying-repository-s-location-with-one-or-more-specific-branches"}},[_v("Specifying "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repository's Location")]),_v(" with one or more specific branches"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#specifying-repository-s-location-with-one-or-more-specific-branches","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("To list out one or more branches for a particular "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repository's Location")]),_v(", we can use a pipe "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("|")]),_v(" separator to demarcate the different branches.")]),_v(" "),_c('p',[_v("Below is an example:")]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Repository's Location")]),_v(" "),_c('th',[_v("Branch")]),_v(" "),_c('th',[_v("Author's Git Host ID")]),_v(" "),_c('th',[_v("... Hidden columns")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://github.com/reposense/RepoSense.git~master|release|cypress")])]),_v(" "),_c('td',[_v("master")]),_v(" "),_c('td',[_v("sikai00")]),_v(" "),_c('td',[_v("--")])])])])]),_c('p',[_v("We have now provided author details for three different branches in a single repo, using a single row.")]),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("The branch specified through the delimiter syntax will take precedence over the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Branch")]),_v(" column.")])]),_v(" "),_c('h2',{attrs:{"id":"using-github-branch-url-as-repository-s-location"}},[_v("Using GitHub branch URL as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repository's Location")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#using-github-branch-url-as-repository-s-location","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("We can also use GitHub branch URL as copied from the address bar directly, to be able to quickly use the URL to specify the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repository's Location")]),_v(" and a specific "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Branch")]),_v(" at the same time.")]),_v(" "),_c('p',[_v("Below is an example:")]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Repository's Location")]),_v(" "),_c('th',[_v("Branch")]),_v(" "),_c('th',[_v("Author's Git Host ID")]),_v(" "),_c('th',[_v("... Hidden columns")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://github.com/reposense/RepoSense/tree/release")])]),_v(" "),_c('td'),_v(" "),_c('td',[_v("sikai00")]),_v(" "),_c('td',[_v("--")])])])])]),_c('p',[_v("There is no need to specify the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Branch")]),_v(" column now, as we have specified it through the GitHub branch URL.")]),_v(" "),_c('box',{attrs:{"type":"warning","seamless":""}},[_c('p',[_v("GitLab and BitBucket branch URL are not supported at the moment.")])]),_v(" "),_c('h2',{attrs:{"id":"combining-the-advanced-syntax"}},[_v("Combining the advanced syntax"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#combining-the-advanced-syntax","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("It is possible to combine the above-mentioned advanced syntax. By doing so, we can go from:")]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Repository's Location")]),_v(" "),_c('th',[_v("Branch")]),_v(" "),_c('th',[_v("Author's Git Host ID")]),_v(" "),_c('th',[_v("... Hidden columns")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://github.com/MarkBind/markbind/tree/vue3-migration")])]),_v(" "),_c('td'),_v(" "),_c('td',[_v("sikai00")]),_v(" "),_c('td',[_v("--")])]),_v(" "),_c('tr',[_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://github.com/reposense/RepoSense.git")])]),_v(" "),_c('td',[_v("master")]),_v(" "),_c('td',[_v("sikai00")]),_v(" "),_c('td',[_v("--")])]),_v(" "),_c('tr',[_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://github.com/reposense/RepoSense.git")])]),_v(" "),_c('td',[_v("cypress")]),_v(" "),_c('td',[_v("sikai00")]),_v(" "),_c('td',[_v("--")])])])])]),_c('p',[_v("to:")]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Repository's Location")]),_v(" "),_c('th',[_v("Branch")]),_v(" "),_c('th',[_v("Author's Git Host ID")]),_v(" "),_c('th',[_v("... Hidden columns")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("https://github.com/MarkBind/markbind/tree/vue3-migration;https://github.com/reposense/RepoSense.git~master|cypress")])]),_v(" "),_c('td'),_v(" "),_c('td',[_v("sikai00")]),_v(" "),_c('td',[_v("--")])])])])]),_c('br')],1)])],1),_v(" "),_c('p'),_v(" "),_c('h2',{attrs:{"id":"group-config-csv"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("group-config.csv")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#group-config-csv","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Optionally, you can provide a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("group-config.csv")]),_v("(which should be in the same directory as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(" file) to provide details on any custom groupings for files in specified repositories ("),_c('a',{attrs:{"href":"/RepoSense/ug/group-config.csv"}},[_v("example")]),_v("). It should contain the following columns:")]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Column Name")]),_v(" "),_c('th',[_v("Explanation")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_v("Repository's Location")]),_v(" "),_c('td',[_v("Same as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")]),_v(". Default: all the repos in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("repo-config.csv")])])]),_v(" "),_c('tr',[_c('td',[_v("Group Name "),_c('span',{staticClass:"badge bg-danger"},[_v("mandatory")])]),_v(" "),_c('td',[_v("Name of the group, e.g.,"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("test")]),_v(".")])]),_v(" "),_c('tr',[_c('td',[_v("Globs * "),_c('span',{staticClass:"badge bg-danger"},[_v("mandatory")])]),_v(" "),_c('td',[_v("The list of file path globs to include for specified group, e.g.,"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("**/test/*;**.java")]),_v(".")])])])])]),_c('p',[_c('sup',[_v("* "),_c('strong',[_v("Multi-value column")]),_v(": multiple values can be entered in this column using a semicolon "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(";")]),_v(" as the separator.")])]),_v(" "),_c('p',[_v("Note that a file in a given repository should only be tagged to one group. "),_c('br'),_v("\ne.g.: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("example.java")]),_v(" in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("example-repo")]),_v(" can either be in the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("test")]),_v(" group or the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("code")]),_v(" group, but not in both "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("test")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("code")]),_v(" group. If multiple groups are specified for a given file, the latter group (i.e., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("code")]),_v(" group) is set for the file.")]),_v(" "),_c('h2',{attrs:{"id":"report-config-json"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("report-config.json")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#report-config-json","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("You can optionally use "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("report-config.json")]),_v(" to customize report generation by providing the following information. ("),_c('a',{attrs:{"href":"/RepoSense/ug/report-config.json"}},[_v("example")]),_v(")")]),_v(" "),_c('p',[_c('strong',[_v("Fields to provide")]),_v(":")]),_v(" "),_c('ul',[_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("title")]),_v(": Title of the generated report, which is also the title of the deployed dashboard. Default: \"RepoSense Report\"")])]),_v(" "),_c('div',{attrs:{"id":"section-standalone"}},[_c('h2',{attrs:{"id":"config-json-standalone-config-file"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("config.json")]),_v(" (standalone config file)"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#config-json-standalone-config-file","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Repo owners can provide the following additional information to RepoSense using a config file that we call the "),_c('strong',[_c('em',[_v("standalone config file")])]),_v(":")]),_v(" "),_c('ul',[_c('li',[_v("which files/authors/commits to analyze/omit")]),_v(" "),_c('li',[_v("which git and git host usernames belong to which authors")]),_v(" "),_c('li',[_v("the display of an author")])]),_v(" "),_c('p',[_v("To use this feature, add a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("_reposense/config.json")]),_v(" to the root of your repo using the format in the example below ("),_c('a',{attrs:{"href":"https://github.com/reposense/RepoSense/blob/master/_reposense/config.json"}},[_v("another example")]),_v(") and "),_c('strong',[_v("commit it")]),_v(" (reason: RepoSense can see committed code only):")]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"no-line-numbers hljs json"}},[_c('span',[_v("{\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"ignoreGlobList\"")]),_v(": ["),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"about-us/**\"")]),_v(", "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"**index.html\"")]),_v("],\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"formats\"")]),_v(": ["),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"html\"")]),_v(", "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"css\"")]),_v("],\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"ignoreCommitList\"")]),_v(": ["),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"90018e49f129ce7e0abdc8b18e91c9813588c601\"")]),_v(", "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"67890def\"")]),_v(", "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"abc123..def456\"")]),_v("],\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"ignoreAuthorList\"")]),_v(": ["),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"charlie\"")]),_v("],\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"authors\"")]),_v(":\n")]),_c('span',[_v(" [\n")]),_c('span',[_v(" {\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"gitId\"")]),_v(": "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"alice\"")]),_v(",\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"emails\"")]),_v(": ["),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"alice@example.com\"")]),_v(", "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"alicet@example.com\"")]),_v("],\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"displayName\"")]),_v(": "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"Alice T.\"")]),_v(",\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"authorNames\"")]),_v(": ["),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"AT\"")]),_v(", "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"A\"")]),_v("],\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"ignoreGlobList\"")]),_v(": ["),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"**.css\"")]),_v("]\n")]),_c('span',[_v(" },\n")]),_c('span',[_v(" {\n")]),_c('span',[_v(" "),_c('span',{pre:true,attrs:{"class":"hljs-attr"}},[_v("\"gitId\"")]),_v(": "),_c('span',{pre:true,attrs:{"class":"hljs-string"}},[_v("\"bob\"")]),_v("\n")]),_c('span',[_v(" }\n")]),_c('span',[_v(" ]\n")]),_c('span',[_v("}\n")])])]),_c('p',[_v("Note: all fields are optional unless specified otherwise.")]),_v(" "),_c('p',[_c('strong',[_v("Fields to provide "),_c('em',[_v("repository-level")]),_v(" info")]),_v(":")]),_v(" "),_c('ul',[_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ignoreGlobList")]),_v(": Folders/files to ignore, specified using the "),_c('a',{attrs:{"href":"https://docs.oracle.com/javase/tutorial/essential/io/fileOps.html#glob"}},[_c('em',[_v("glob format")])]),_v(".")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("formats")]),_v(": File formats to analyze. Binary file formats, such as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("png")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("jpg")]),_v(", will be automatically labelled as the file type "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("binary")]),_v(" in the generated report. Default: all file formats")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ignoreCommitList")]),_v(": The list of commits to ignore during analysis. For accurate results, the commits should be provided with their full hash. Additionally, a range of commits can be specified using the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("..")]),_v(" notation e.g. "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("abc123..def456")]),_v(" (both inclusive).")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ignoreAuthorList")]),_v(": The list of authors to ignore during analysis. Authors specified in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("authors")]),_v(" field or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("author-config.csv")]),_v(" will be also be omitted if they are in this list. Authors should be specified by their "),_c('a',{attrs:{"href":"#a-note-about-git-author-name"}},[_v("Git Author Name")]),_v(".")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("fileSizeLimit")]),_v(": A file size limit for the repository in bytes as a single number without units, that will override the default file size limit. If not specified, the default file size limit will continue to be used.")])]),_v(" "),_c('p',[_c('strong',[_v("Fields to provide "),_c('em',[_v("author-level")]),_v(" info")]),_v(":"),_c('br'),_v("\nNote: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("authors")]),_v(" field should contain "),_c('em',[_v("all")]),_v(" authors that should be captured in the analysis.")]),_v(" "),_c('ul',[_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("gitId")]),_v(": Username of the author. "),_c('span',{staticClass:"badge bg-danger"},[_v("mandatory")]),_v(" field.")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("emails")]),_v(": Associated git emails of the author. For GitHub, this can be found in your "),_c('a',{attrs:{"href":"https://github.com/settings/emails"}},[_v("GitHub settings")]),_v(".")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("displayName")]),_v(": Name to display on the report for this author.")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("authorNames")]),_v(": Git Author Name(s) used in the author's commits. By default, RepoSense assumes an author would use their remote Git Host username as the Git username too. The meaning of "),_c('em',[_v("Git Author Name")]),_v(" is explained in "),_c('a',{attrs:{"href":"#a-note-about-git-author-name"}},[_c('em',[_v("A note about git author name")])]),_v(".")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ignoreGlobList")]),_v(": "),_c('em',[_v("Additional")]),_v(" (i.e. on top of the repo-level "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ignoreGlobList")]),_v(") folders/files to ignore for a specific author. The path glob syntax is specified by the "),_c('a',{attrs:{"href":"https://docs.oracle.com/javase/tutorial/essential/io/fileOps.html#glob"}},[_c('em',[_v("glob format")])]),_v(". In the example above, the actual "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ignoreGlobList")]),_v(" for "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("alice")]),_v(" would be "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("[\"about-us/**\", \"**index.html\", \"**.css\"]")]),_v(".")])]),_v(" "),_c('p',[_v("To verify your standalone configuration is as intended, add the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("_reposense/config.json")]),_v(" to your local copy of repo and run RepoSense against it as follows:"),_c('br')]),_v(" "),_c('ul',[_c('li',[_v("Format: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar --repo LOCAL_REPO_LOCATION")]),_v(" "),_c('br')]),_v(" "),_c('li',[_v("Example: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar RepoSense.jar --repo c:/myRepose/foo/bar")]),_c('br'),_v("\nAfter that, view the report to see if the configuration you specified in the config file is being reflected correctly in the report.")])]),_v(" "),_c('h2',{attrs:{"id":"a-note-about-git-author-name"}},[_v("A note about git author name"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#a-note-about-git-author-name","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Git Author Name")]),_v(" refers to the customizable author's display name set in the local "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(".gitconfig")]),_v(" file. For example, in the Git Log's display:")]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"no-line-numbers hljs"}},[_c('span',[_v("...\n")]),_c('span',[_v("commit cd7f610e0becbdf331d5231887d8010a689f87c7\n")]),_c('span',[_v("Author: ConfiguredAuthorName \n")]),_c('span',[_v("Date: Fri Feb 9 19:14:41 2018 +0800\n")]),_c('span',[_v("\n")]),_c('span',[_v(" Make some changes to show my new author's name\n")]),_c('span',[_v("\n")]),_c('span',[_v("commit e3f699fd4ef128eebce98d5b4e5b3bb06a512f49\n")]),_c('span',[_v("Author: ActualGitHostId \n")]),_c('span',[_v("Date: Fri Feb 9 19:13:13 2018 +0800\n")]),_c('span',[_v("\n")]),_c('span',[_v(" Initial commit\n")]),_c('span',[_v(" ...\n")])])]),_c('p',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ActualGitHostId")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ConfiguredAuthorName")]),_v(" are both "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Git Author Name")]),_v(" of the same author."),_c('br'),_v("\nTo find the author name that you are currently using for your current git repository, run the following command within your git repository:")]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"no-line-numbers hljs"}},[_c('span',[_v("git config user.name\n")])])]),_c('p',[_v("To set the author name to the value you want (e.g., to set it to your GitHub username) for your current git repository, you can use the following command ("),_c('a',{attrs:{"href":"https://www.git-tower.com/learn/git/faq/change-author-name-email"}},[_v("more info")]),_v("):")]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"no-line-numbers hljs"}},[_c('span',[_v("git config user.name \"YOUR_AUTHOR_NAME”\n")])])]),_c('p',[_v("To set the author name to use a default value you want for future git repositories, you can use the following command:")]),_v(" "),_c('pre',[_c('code',{pre:true,attrs:{"class":"no-line-numbers hljs"}},[_c('span',[_v("git config --global user.name \"YOUR_AUTHOR_NAME”\n")])])]),_c('p',[_v("RepoSense expects the Git Author Name to be the same as author's username on the Git hosting platform (GitHub, GitLab, BitBucket). If an author's "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Git Author Name")]),_v(" is different from their username on the Git hosting platform, the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Git Author Name")]),_v(" needs to be specified in the standalone config file. If the author has more than one "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Git Author Name")]),_v(", multiple values can be entered too.")]),_v(" "),_c('box',{attrs:{"type":"warning","seamless":""}},[_c('p',[_v("Note: Symbols such as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("\"")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("!")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("/")]),_v(" etc. in your author name will be omitted, which may reduce the accuracy of the analysis if 2 names in the repository are approximately similar.")])])],1),_v(" "),_c('div',{attrs:{"id":"section-blurbs"}},[_c('h2',{attrs:{"id":"blurbs-md"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("blurbs.md")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#blurbs-md","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("You can optionally use "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("blurbs.md")]),_v(" to add blurbs in Markdown syntax for repository branches. These blurbs will be seen when grouping by "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Repo/Branch")]),_v(". ("),_c('a',{attrs:{"href":"https://github.com/reposense/RepoSense/blob/master/docs/ug/blurbs.md"}},[_v("example")]),_v(")")]),_v(" "),_c('p',[_c('strong',[_v("Format")]),_v(":")]),_v(" "),_c('ul',[_c('li',[_v("First line in section: Link to the repository branch.")]),_v(" "),_c('li',[_v("Second line onwards: Blurb content.")]),_v(" "),_c('li',[_v("Delimiter: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("")]),_v(". Everything on the line after the delimiter will be ignored.")])])])],1)])],1),_v(" "),_c('p')]),_v(" "),_m(15),_v(" "),_m(16),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_v("It takes a few minutes for report generation. Meanwhile, you can monitor the progress live at "),_c('a',{attrs:{"href":"https://travis-ci.org/dashboard/builds"}},[_v("Travis-CI's Builds")]),_v(".")])])],1),_v(" "),_m(17),_v(" "),_m(18),_v(" "),_m(19),_v(" "),_m(20),_v(" "),_m(21)]),_v(" "),_c('overlay-source',{staticClass:"fixed-header-padding",attrs:{"id":"page-nav","tag-name":"nav","to":"page-nav"}},[_c('div',{staticClass:"nav-component slim-scroll"},[_c('overlay-source',{staticClass:"nav nav-pills flex-column my-0 small no-flex-wrap",attrs:{"id":"mb-page-nav","tag-name":"nav","to":"mb-page-nav"}},[_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#appendix-reposense-with-travis"}},[_v("Appendix: RepoSense with Travis‎")]),_v(" "),_c('nav',{staticClass:"nav nav-pills flex-column my-0 nested no-flex-wrap"},[_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#setting-up"}},[_v("Setting up‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#updating-the-report"}},[_v("Updating the report‎")])])])],1)])],1),_v(" "),_m(22)])} }; var pageVueStaticRenderFns = [function anonymous( ) { @@ -71,6 +71,6 @@ with(this){return _c('p',[_c('strong',[_v("Automated:")]),_v(" "),_c('a',{attrs: with(this){return _c('ol',[_c('li',[_v("Login to "),_c('a',{attrs:{"href":"https://travis-ci.org/"}},[_v("Travis-CI")]),_v(".")]),_v(" "),_c('li',[_v("Go to "),_c('a',{attrs:{"href":"https://travis-ci.org/search/publish-RepoSense/"}},[_v("your fork in Travis-CI")]),_v(", click on "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("More options")]),_v(" on the right then access "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Settings")]),_v(".")]),_v(" "),_c('li',[_v("Under "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Cron Jobs")]),_v(", choose "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("master")]),_v(" for "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Branch")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Always run")]),_v(" for "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Options")]),_v(" and pick an "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Interval")]),_v(" of your choice; then click "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Add")]),_v(".\n"),_c('a',{attrs:{"href":"/RepoSense/images/publishingguide-cronsetting.jpg","target":"_self"}},[_c('img',{staticClass:"img-fluid",attrs:{"src":"/RepoSense/images/publishingguide-cronsetting.jpg","alt":"Travis-CI Cron","title":"Travis-CI Cron"}})])])])} },function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('small',[_v("["),_c('span',[_c('strong',[_v("Powered by")])]),_v(" "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"30"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.2")]),_v(", generated on Tue, 14 May 2024, 13:12:51 UTC]")])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('small',[_v("["),_c('span',[_c('strong',[_v("Powered by")])]),_v(" "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"30"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.2")]),_v(", generated on Thu, 16 May 2024, 22:31:25 UTC]")])])])} }]; \ No newline at end of file