Files
gitks/refs/list_refs.rs
T
zhenyi dcb0fb74c5 feat(core): implement Git repository operations with gRPC services
- Add advertise_refs functionality for Git protocol communication
- Implement archive service with TAR/ZIP format support and streaming
- Create blame service for Git file annotation with line tracking
- Add branch management including create, delete, rename and compare operations
- Implement merge checking with conflict detection and fast-forward handling
- Add cherry-pick functionality for applying commits between branches
- Integrate gix library for Git repository operations and object handling
- Add comprehensive test suite covering all Git operations
- Implement proper error handling and repository validation
- Add pagination support for large result sets
- Create protobuf definitions for all Git operations and data structures
- Add build system for gRPC code generation and dependency management
2026-06-04 13:05:38 +08:00

26 lines
831 B
Rust

use crate::bare::GitBare;
use crate::error::GitResult;
use crate::pb::ReferenceAdvertisement;
impl GitBare {
pub fn list_refs(&self) -> GitResult<Vec<ReferenceAdvertisement>> {
let repo = self.gix_repo()?;
let mut refs = Vec::new();
for r in repo.references()?.all()? {
let mut r = match r {
Ok(r) => r,
Err(_) => continue,
};
let hex = r.peel_to_id().map(|id| id.to_string()).unwrap_or_default();
refs.push(ReferenceAdvertisement {
name: r.name().to_string(),
target_oid: Some(self.oid_to_pb(hex)),
peeled_oid: None,
symbolic: r.target().try_id().is_none(),
symbolic_target: String::new(),
});
}
Ok(refs)
}
}