History

feat: `gix clone` with `--ref` support.

`--ref` is similar to `--branch`, but was renamed as it also supports tags for example.

Sebastian Thiel committed 2 years ago

Commit 9bf01e41 parent acbfa6f3 files · +9 −0Browse files

Unified · Split

3 files
  1. gitoxide-core/src/repository/clone.rs +3 −0
  2. src/plumbing/main.rs +2 −0
  3. src/plumbing/options/mod.rs +4 −0
gitoxide-core/src/repository/clone.rs+3−0
@@ -6,6 +6,7 @@ pub struct Options { · 5 unmodified lines
6 pub handshake_info: bool,6 pub handshake_info: bool,
7 pub no_tags: bool,7 pub no_tags: bool,
8 pub shallow: gix::remote::fetch::Shallow,8 pub shallow: gix::remote::fetch::Shallow,
9 pub ref_name: Option<gix::refs::PartialName>,
9}10}
10 11
11pub const PROGRESS_RANGE: std::ops::RangeInclusive<u8> = 1..=3;12pub const PROGRESS_RANGE: std::ops::RangeInclusive<u8> = 1..=3;
@@ -31,6 +32,7 @@ pub(crate) mod function { · 19 unmodified lines
31 handshake_info,32 handshake_info,
32 bare,33 bare,
33 no_tags,34 no_tags,
35 ref_name,
34 shallow,36 shallow,
35 }: Options,37 }: Options,
36 ) -> anyhow::Result<()>38 ) -> anyhow::Result<()>
@@ -75,6 +77,7 @@ pub(crate) mod function { · 38 unmodified lines
75 }77 }
76 let (mut checkout, fetch_outcome) = prepare78 let (mut checkout, fetch_outcome) = prepare
77 .with_shallow(shallow)79 .with_shallow(shallow)
80 .with_ref_name(ref_name.as_ref())?
78 .fetch_then_checkout(&mut progress, &gix::interrupt::IS_INTERRUPTED)?;81 .fetch_then_checkout(&mut progress, &gix::interrupt::IS_INTERRUPTED)?;
79 82
80 let (repo, outcome) = if bare {83 let (repo, outcome) = if bare {
src/plumbing/main.rs+2−0
@@ -404,6 +404,7 @@ pub fn main() -> Result<()> { · 403 unmodified lines
404 handshake_info,404 handshake_info,
405 bare,405 bare,
406 no_tags,406 no_tags,
407 ref_name,
407 remote,408 remote,
408 shallow,409 shallow,
409 directory,410 directory,
@@ -413,6 +414,7 @@ pub fn main() -> Result<()> { · 3 unmodified lines
413 bare,414 bare,
414 handshake_info,415 handshake_info,
415 no_tags,416 no_tags,
417 ref_name,
416 shallow: shallow.into(),418 shallow: shallow.into(),
417 };419 };
418 prepare_and_run(420 prepare_and_run(
src/plumbing/options/mod.rs+4−0
@@ -434,6 +434,10 @@ pub mod clone { · 433 unmodified lines
434 /// The url of the remote to connect to, like `https://github.com/byron/gitoxide`.434 /// The url of the remote to connect to, like `https://github.com/byron/gitoxide`.
435 pub remote: OsString,435 pub remote: OsString,
436 436
437 /// The name of the reference to check out.
438 #[clap(long = "ref", value_parser = crate::shared::AsPartialRefName, value_name = "REF_NAME")]
439 pub ref_name: Option<gix::refs::PartialName>,
440
437 /// The directory to initialize with the new repository and to which all data should be written.441 /// The directory to initialize with the new repository and to which all data should be written.
438 pub directory: Option<PathBuf>,442 pub directory: Option<PathBuf>,
439 }443 }