When an explicit patch is given in pijul pull
, we need to complete its dependencies in addition to doing a recursive apply (which also does apply transitive dependencies), in order to get the "touched files" right: some touched files might come from transitive dependencies.
NGRJOJE7CA7655Z7VVH74W2OUVAKBC7ZGZSI5AYZS2WZP4LN3IVQC
IPU65ECUBBYBCAFUAOFZVL25IVBWEMHBZ6Q5XXLYTD5FZT6HNQOAC
UOAHH3CCJYVBRUW6BD5JHC5R4TPX7GNU52BMZWQD5K5NQWWFV4HAC
3E2KY6Y4SQ2UO6PLA4K3MQKHIRHSQCBAJIPJT7NQ6BIETMAQX5QAC
3OW3YNZXF6DR2EI5XS7PDHUUZMARDU2JUJFJKIEWXQNSMCIBVAOQC
SXEYMYF7P4RZMZ46WPL4IZUTSQ2ATBWYZX7QNVMS3SGOYXYOHAGQC
M5FK3ABTKBDG6HHW32G7UKRJEJQKD2U7BPXNZ3HVHBKULWVV6CTQC
MU5GSJAW65PEG3BRYUKZ7O37BPHW3MOX3S5E2RFOXKGUOJEEDQ5AC
BBKV6VMN4EVBCBSAQMTL2TARBBSQEZGRCXMTKYUIDOJ3HZISUP7AC
44BN7FWSIXKG75IJUTCXLJE7VANNQFPRHQXTPLQHFU7AKGLSPQRAC
BE7GUCI2N6TX3P2HRMFSH7XLJKILDPOKOXKA7HWOABBFNKCKMZLAC
7HOBLRD43W2R5OVOYZVDO5LYPBZS7OSLDS7FH4NVNMBL3AZGMLSQC
EUZFFJSOWV4PXDFFPDAFBHFUUMOFEU6ST7JH57YYRRR2SEOXLN6QC
I52XSRUH5RVHQBFWVMAQPTUSPAJ4KNVID2RMI3UGCVKFLYUO6WZAC
IVLLXQ5ZWZDKHO4TNQG3TPXN34H6Y2WXPAGSO4PWCYNSKUZWOEJQC
3KRGVQFUWFHPOGZOXVTJYNCM4XBRVYITAEOVPKBSAZ5GZIUO5KVQC
DO2Y5TY5JQISUHCVNPI2FXO7WWZVJQ3LGPWF4DNADMGZRIO6PT2QC
if !self.all && self.changes.is_empty() {
let mut o = make_changelist(&repo.changes, &to_download, "pull")?;
to_download = loop {
let d = parse_changelist(&edit::edit_bytes(&o[..])?, &to_download);
let comp = complete_deps(&repo.changes, &to_download, &d)?;
if comp.len() == d.len() {
break comp;
}
o = make_changelist(&repo.changes, &comp, "pull")?
};
if self.changes.is_empty() {
if !self.all {
let mut o = make_changelist(&repo.changes, &to_download, "pull")?;
to_download = loop {
let d = parse_changelist(&edit::edit_bytes(&o[..])?, &to_download);
let comp = complete_deps(&repo.changes, Some(&to_download), &d)?;
if comp.len() == d.len() {
break comp;
}
o = make_changelist(&repo.changes, &comp, "pull")?
};
}
} else {
to_download = complete_deps(&repo.changes, None, &to_download)?;
let mut result = Vec::with_capacity(original.len());
let mut result_h = HashSet::with_capacity(original.len());
let mut result = Vec::with_capacity(original.unwrap_or(now).len());
let mut result_h = HashSet::with_capacity(original.unwrap_or(now).len());
if original.get(&CS::Change(d)).is_some() && is_missing {
debug!("complete_deps {:?} {:?}", d, is_missing);
let is_missing = if let Some(ref original) = original_ {
// If this is a list we submitted to the user for editing
original.get(&CS::Change(d)).is_some() && is_missing
} else {
// Else, we were given an explicit list of patches to pull/push
is_missing
};
if is_missing {