Compare commits

..

No commits in common. "4b8c1a64765b486a7d598982d1142f702ddf8f86" and "e92baf174f93eedbc3ccedf98fc8957121f7d123" have entirely different histories.

3 changed files with 6 additions and 11 deletions

View file

@ -67,7 +67,7 @@ and done! should enable tci for all repos (if they are configured to allow it)
just run just run
```sh ```sh
git config --global alias.tci '!func(){ git checkout tci && git pull && git merge $1 && git push; git checkout $1; }; func' git config --global alias.tci '!func(){ git checkout tci; git pull; git merge $1; git push; git checkout $1; }; func'
``` ```
it will add a `git tci <branch>` alias, which you can use to quickly checkout, pull, merge and push on tci branch it will add a `git tci <branch>` alias, which you can use to quickly checkout, pull, merge and push on tci branch

View file

@ -4,7 +4,6 @@ pub struct TciRepo {
pub path: std::path::PathBuf, pub path: std::path::PathBuf,
pub cfg: git2::Config, pub cfg: git2::Config,
pub refs: Vec<String>, pub refs: Vec<String>,
pub ci_branch: Option<String>,
} }
impl TciRepo { impl TciRepo {
@ -32,9 +31,7 @@ impl TciRepo {
let cfg = git2::Config::open(&path.join("config"))?; let cfg = git2::Config::open(&path.join("config"))?;
let ci_branch = cfg.get_string("tci.branch").ok(); Ok(TciRepo { name, path, cfg, refs })
Ok(TciRepo { name, path, cfg, refs, ci_branch })
} }
pub fn updated(&self, search: &str) -> bool { pub fn updated(&self, search: &str) -> bool {

View file

@ -24,12 +24,13 @@ impl Tci {
return false; // we are in whitelist mode and this repo is not whitelisted return false; // we are in whitelist mode and this repo is not whitelisted
} }
if let Some(repo_branch) = &self.repo.ci_branch { if let Ok(repo_branch) = self.repo.cfg.get_str("tci.branch") {
return self.repo.updated(&repo_branch); return self.repo.updated(repo_branch);
} }
match self.cfg.branch.as_deref() { match self.cfg.branch.as_deref() {
None => self.repo.updated("tci"), None => self.repo.updated("tci"),
Some("") => true,
Some(b) => self.repo.updated(b), Some(b) => self.repo.updated(b),
} }
} }
@ -64,14 +65,11 @@ impl Tci {
let tmp = tempdir::TempDir::new( let tmp = tempdir::TempDir::new(
&format!("tci-{}", self.repo.name.replace('/', "_")) &format!("tci-{}", self.repo.name.replace('/', "_"))
)?; )?;
let clone_branch = self.repo.ci_branch.as_deref()
.unwrap_or_else(|| self.cfg.branch.as_deref().unwrap_or("tci"));
// TODO recursive clone? automatically clone all submodules after? // TODO recursive clone? automatically clone all submodules after?
git2::build::RepoBuilder::new() git2::build::RepoBuilder::new()
.bare(false) .bare(false)
.branch(clone_branch) .branch("tci")
.clone( .clone(
self.repo.path.to_str() self.repo.path.to_str()
.ok_or(TciErr::FsError("repo path is not a valid string"))?, .ok_or(TciErr::FsError("repo path is not a valid string"))?,