make parsed branch configurable

This commit is contained in:
Trevor Bentley
2023-01-13 17:29:00 +01:00
parent 10082c2096
commit cfc589e3b2
4 changed files with 24 additions and 4 deletions
+5 -3
View File
@@ -192,6 +192,8 @@ pub fn parse_repo(
let mut history_count = 0;
let mut branch_count = 0;
let mut tag_count = 0;
let branch_name = settings.branch.as_deref().unwrap_or("master");
let branch_obj = repo.revparse_single(branch_name)?;
// Cache the shortnames of all references
let mut references: BTreeMap<String, Vec<String>> = BTreeMap::new();
@@ -213,7 +215,7 @@ pub fn parse_repo(
loud!();
let mut revwalk = repo.revwalk()?;
revwalk.set_sorting(git2::Sort::TOPOLOGICAL)?;
revwalk.push_head()?;
revwalk.push(branch_obj.id())?;
loudest!(" - Parsing history:");
for oid in revwalk {
let oid = oid?;
@@ -379,11 +381,11 @@ pub fn parse_repo(
let max_depth = settings.limit_tree_depth.unwrap_or(usize::MAX);
if max_depth > 0 {
loudest!(" - Walking root files");
walk_file_tree(&repo, "HEAD", &mut root_files, 0, usize::MAX, false, "")?;
walk_file_tree(&repo, branch_name, &mut root_files, 0, usize::MAX, false, "")?;
// TODO: maybe this should be optional? Walking the whole tree
// could be slow on huge repos.
loudest!(" - Walking all files");
walk_file_tree(&repo, "HEAD", &mut all_files, 0, max_depth, true, "")?;
walk_file_tree(&repo, branch_name, &mut all_files, 0, max_depth, true, "")?;
}
loud!(" - parsed {} files", all_files.len());
-1
View File
@@ -10,7 +10,6 @@ use settings::{GitsyCli, GitsySettings};
// TODO:
//
// * basic, light, dark, and fancy default themes
// * specify default branch, use instead of HEAD
// * better error propagation
// * automated tests
// * documentation + examples
+4
View File
@@ -192,6 +192,7 @@ pub struct GitsySettingsRepo {
pub name: Option<String>,
pub description: Option<String>,
pub website: Option<String>,
pub branch: Option<String>,
pub asset_files: Option<Vec<String>>,
pub render_markdown: Option<bool>,
pub syntax_highlight: Option<bool>,
@@ -232,6 +233,7 @@ pub struct GitsySettings {
pub site_url: Option<String>,
pub site_description: Option<String>,
pub asset_files: Option<Vec<String>>,
pub branch: Option<String>,
#[serde(rename(deserialize = "gitsy_templates"))]
pub templates: GitsySettingsTemplates,
#[serde(rename(deserialize = "gitsy_outputs"))]
@@ -300,6 +302,7 @@ impl GitsySettings {
if repo.name.is_none() {
repo.name = Some(k.clone());
}
global_to_repo!(settings, repo, branch);
global_to_repo!(settings, repo, render_markdown);
global_to_repo!(settings, repo, syntax_highlight);
global_to_repo!(settings, repo, syntax_highlight_theme);
@@ -332,6 +335,7 @@ impl GitsySettings {
repo_descriptions.insert(GitsySettingsRepo {
path: dir.path().clone(),
name: Some(name),
branch: settings.branch.clone(),
render_markdown: settings.render_markdown.clone(),
syntax_highlight: settings.syntax_highlight.clone(),
syntax_highlight_theme: settings.syntax_highlight_theme.clone(),