mirror of
https://git.alemi.dev/tci.git
synced 2024-12-18 09:44:53 +01:00
Compare commits
3 commits
e92baf174f
...
4b8c1a6476
Author | SHA1 | Date | |
---|---|---|---|
4b8c1a6476 | |||
92ea79333e | |||
e0e3041db7 |
3 changed files with 11 additions and 6 deletions
|
@ -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
|
||||||
|
|
|
@ -4,6 +4,7 @@ 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 {
|
||||||
|
@ -31,7 +32,9 @@ impl TciRepo {
|
||||||
|
|
||||||
let cfg = git2::Config::open(&path.join("config"))?;
|
let cfg = git2::Config::open(&path.join("config"))?;
|
||||||
|
|
||||||
Ok(TciRepo { name, path, cfg, refs })
|
let ci_branch = cfg.get_string("tci.branch").ok();
|
||||||
|
|
||||||
|
Ok(TciRepo { name, path, cfg, refs, ci_branch })
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn updated(&self, search: &str) -> bool {
|
pub fn updated(&self, search: &str) -> bool {
|
||||||
|
|
10
src/tci.rs
10
src/tci.rs
|
@ -24,13 +24,12 @@ 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 Ok(repo_branch) = self.repo.cfg.get_str("tci.branch") {
|
if let Some(repo_branch) = &self.repo.ci_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),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -66,10 +65,13 @@ impl Tci {
|
||||||
&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("tci")
|
.branch(clone_branch)
|
||||||
.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"))?,
|
||||||
|
|
Loading…
Reference in a new issue