browse ok
This commit is contained in:
parent
06fcc46a15
commit
a562c4616c
|
@ -5,6 +5,7 @@ pub struct Error(String);
|
||||||
|
|
||||||
impl From<git2::Error> for Error {
|
impl From<git2::Error> for Error {
|
||||||
fn from(giterr: git2::Error) -> Self {
|
fn from(giterr: git2::Error) -> Self {
|
||||||
|
// panic!()
|
||||||
Error(format!("{}", giterr))
|
Error(format!("{}", giterr))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -22,7 +22,9 @@ impl GitRepo {
|
||||||
pub fn get_tree<'a, 'b, 'c> (&'a self, commit : &'b GitRef, path : &'c Path) -> Result<GitDir<'a>, git2::Error> {
|
pub fn get_tree<'a, 'b, 'c> (&'a self, commit : &'b GitRef, path : &'c Path) -> Result<GitDir<'a>, git2::Error> {
|
||||||
let commit = match commit {
|
let commit = match commit {
|
||||||
GitRef::Commit(commit) => {
|
GitRef::Commit(commit) => {
|
||||||
|
// println!("commit : {}", commit.as_str());
|
||||||
let oid = Oid::from_str(commit.as_str())?;
|
let oid = Oid::from_str(commit.as_str())?;
|
||||||
|
// println!("{}", oid);
|
||||||
self.git2.find_commit(oid)?
|
self.git2.find_commit(oid)?
|
||||||
}
|
}
|
||||||
GitRef::Branch(branch) => {
|
GitRef::Branch(branch) => {
|
||||||
|
@ -30,14 +32,22 @@ impl GitRepo {
|
||||||
branch.get().peel_to_commit()?
|
branch.get().peel_to_commit()?
|
||||||
}
|
}
|
||||||
GitRef::Head => {
|
GitRef::Head => {
|
||||||
|
// println!("coucou1");
|
||||||
let head = self.git2.head()?;
|
let head = self.git2.head()?;
|
||||||
|
// println!("coucou");
|
||||||
head.peel_to_commit()?
|
head.peel_to_commit()?
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
let tree = commit.tree()?;
|
let root_tree = commit.tree()?;
|
||||||
let subtree = self.git2.find_tree(tree.get_path(path)?.id())?;
|
let tree = if path.as_os_str().len() == 0 {
|
||||||
|
root_tree
|
||||||
|
} else {
|
||||||
|
let oid1 = root_tree.get_path(path)?.id();
|
||||||
|
// println!("{}", oid1);
|
||||||
|
self.git2.find_tree(oid1)?
|
||||||
|
};
|
||||||
let fullname = path.to_path_buf();
|
let fullname = path.to_path_buf();
|
||||||
Ok(GitDir { fullname, tree : subtree })
|
Ok(GitDir { fullname, tree })
|
||||||
}
|
}
|
||||||
|
|
||||||
pub async fn browse<'a>(&'a self, dir: &GitDir<'a>) -> Result<Vec<GitBrowseEntry<'a>>, git2::Error> {
|
pub async fn browse<'a>(&'a self, dir: &GitDir<'a>) -> Result<Vec<GitBrowseEntry<'a>>, git2::Error> {
|
||||||
|
|
10
src/main.rs
10
src/main.rs
|
@ -153,8 +153,14 @@ async fn git_main(
|
||||||
gitust : web::Data<Gitust>
|
gitust : web::Data<Gitust>
|
||||||
) -> Result<GitMainTemplate<Vec<Entry>, Vec<(String, String)>>, error::Error> {
|
) -> Result<GitMainTemplate<Vec<Entry>, Vec<(String, String)>>, error::Error> {
|
||||||
let rootname = match pathopt {
|
let rootname = match pathopt {
|
||||||
None => {"/".to_string()}
|
None => {"".to_string()}
|
||||||
Some(s) => {s}
|
Some(s) => {
|
||||||
|
if s.starts_with("/") {
|
||||||
|
(&s[1..]).to_string()
|
||||||
|
} else {
|
||||||
|
s
|
||||||
|
}
|
||||||
|
}
|
||||||
};
|
};
|
||||||
let commit = match commitnameopt {
|
let commit = match commitnameopt {
|
||||||
None => {match branchopt {
|
None => {match branchopt {
|
||||||
|
|
Loading…
Reference in New Issue