mod common;
use anyhow::Result;
use common::TestRepoSetup;
use git_sync_rs::{RepositorySynchronizer, SyncConfig};
#[test]
fn basic_sync() -> Result<()> {
let setup = TestRepoSetup::new()?;
setup.commit_file("README.md", "# Initial\n", "Initial commit")?;
setup.push()?;
let second_clone = setup.create_second_clone("second")?;
setup.commit_file_in(
&second_clone,
"file1.txt",
"Hello from second clone\n",
"Add file1",
)?;
setup.push_from(&second_clone)?;
let sync_config = SyncConfig {
sync_new_files: true,
skip_hooks: false,
commit_message: Some("Sync: {hostname} at {timestamp}".to_string()),
remote_name: "origin".to_string(),
branch_name: "master".to_string(),
conflict_branch: false,
target_branch: None,
};
let mut synchronizer =
RepositorySynchronizer::new_with_detected_branch(&setup.local_path, sync_config)?;
synchronizer.sync(false)?;
setup.assert_file_content("file1.txt", "Hello from second clone\n")?;
Ok(())
}