BK-PULL(1)
bk pull π π¦ β BitKeeper Userβs Manual
okay so bestie, this is the BitKeeper Userβs Manual page for bk pull, manual section none, and itβs literally the glow-up for your repository. The whole vibe: pull updates from your parent(s) and keep it cute. β¨
β¨ NAME β¨
bk pull β update a repository from its parent[s]. Thatβs the name, thatβs the mission, and itβs giving main character energy. π
π©· SYNOPSIS π©·
bk pull [-iqRsTuv] [-cn] [-rrev] [parent ...]
πΈ DESCRIPTION πΈ
bk pull updates a repository from its incoming parent[s]. Changes are retrieved and automatically applied, if possible. You will only be asked to resolve conflicts by hand if a file has overlapping changes β like, changes where both repositories have touched the same line in the same file. No cap, thatβs the only time itβs gonna make you do manual conflict resolution. π
To see what would be pulled, run:
bk changes -aR
bk pull normally runs resolve β the tool which applies the pulled changes β automatically. resolve will look at each change, make sure there are no conflicts that it canβt merge, and apply the change. You may have to (or want to) run resolve manually. If you do not want automatic merges, i.e., you want to diff them by hand, then use the -i option. If resolve was run automatically and it found conflicts, the changes have not been applied; you will need to run an interactive resolve to merge and apply the changes. Periodt. π
You can override the default parent by specifying a different one. Doing so changes the parent for the duration of this command only. Lowkey temporary, highkey useful. π¦
If youβve pulled in error you may use bk unpull to remove the changesets introduced by the pull. Please read the bk unpull man page for important information about what is and is not unpulled. This is the βoops, undoβ button, but read the lore first. π
π₯ SAFETY π₯
In non-nested BitKeeper, after you have pulled from a given repository, it is safe to delete the sending side as all the changes it contained have been transferred. Slay. This is not necessarily true in a nested collection since the set of components populated in the sending side and the set of components populated in the receiving side might not be the same. Vibe check failed, basically.
In order to solve this problem, BitKeeper utilizes gates, which are repositories that you set up as permanent (e.g. integration repositories or masters). The URLs for the gates are remembered by BitKeeper and used when pulling from non-gate repositories. Iconic infrastructure behavior. π
When pulling from a nested repository, if the sending side of the pull is not a gate, BitKeeper will default to βsafeβ mode. In safe mode, all components populated in the sending side that are not found in gates are transferred to the receiving side. This preserves the attribute that pulling from a repository transfers all unique information thus allowing the sending side of the pull to be deleted. Safe mode is the βyou can clean up afterβ mode. π§
When pulling from a gate, BitKeeper defaults to unsafe mode. In this mode, only the components that are populated in the receiving side are included in the pull. ChangeSets made to components in the sending side (the gate) that are not populated in the receiving side will not be transferred.
π¨ warning, bestie: in this case, removing the sending side (the gate) could result in lost work. Only mark as gates repositories that you know are not going to be deleted. Do not play with this one. π
When pulling in safe mode, BitKeeper will try hard not to break the aliases in the sending side while at the same time minimizing the amount of information that needs to be transferred to the receiving side. This means that if the sending side has many aliases populated, and only some of those would be sufficient to account for all the components with unique work, only those aliases would be transferred. Itβs being efficient and careful at the same time β obsessed. β¨
An example: suppose the sending side has components A and B, with new work in both. Suppose the receiving repository just has A. Pulling from the sending side is considered "unsafe" when only the A csets are sent but "safe" when the A csets and B component are sent. Thatβs the whole vibe check in one example. π«Ά
π OPTIONS π
--auto-populateβ automatically populate missing components as needed to perform a "safe" pull.--auto-portβ automatically turn the pull into a port if needed. Only works in standalone repositories. Useful when multiple parents are a combination of standalone and components.--batchβ Pass--batchtoresolve(--batchmeans do not do interactive resolve of any conflicts, leave that for later.) Mutually exclusive with-i.-cnβ try to get the remote lock n times before giving up (default forever).-Eenv=valβ Export environment variable to remote site. The environment variable must start withBKU_.-iβ Turn off automerge feature inresolve. For each file with parallel work, you are prompted to examine the changes and either manually or automatically merge them. Mutually exclusive with--batch.-qβ Be quiet.-Rβ Do not runresolveat all. You must runbk resolvelater.-rrevβ Pull up to and including this revision, but exclude later changes. (Or key or changeset revision. Seebk help termsunder 'rev argument')--safeβ In a nested collection, using this option means that the source repository may be safely removed after a successful pull. Either the destination received everything that the source had, or the non-pulled components were found in a safe location (a gate). This option is implied when pulling from a nested collection that is not a gate. This option has no effect in a traditional standalone repository. See also--unsafebelow.--statsβ After finishing the pull, print statistics about what was pulled. The format is compatible with the output ofbk diff --stats-only. This option can be permanently turned on with thestats_after_pullconfiguration variable. Seebk help configfor more information.-Tβ Pass-Ttoresolve(-Tmeans do not use the GUI tools.)-uβ Do not complete the pull if there are local changesets, i.e., insist that this operation is an update operation.--unsafeβ In a nested collection, using this option means that the source repository may contain work that is not pulled into the destination.--unsafemeans pull updates only to the components and/or aliases populated in the destination. This option has no effect in a traditional standalone repository. This option is implied when pulling from a gate. See also--safeabove.-vβ Be verbose by listing each file.
π SEE ALSO π
bk-bkdbk-changesbk-gatebk-parentbk-pushbk-resolvebk-triggersbk-unpull
π CATEGORY π
- Common
- Repository
π footer check: BitKeeper Inc, 1E1, page bk pull(none) β thereβs no date in that footer, bestie, so weβre not inventing one β byeee! π
π¦ where this page comes from
- alpine 3.24: bitkeeper-doc 7.3.3-r1 Β· Apache-2.0
- Copyright (c) 1998-2015 BitKeeper Inc
- Copyright (C) 1989, 1990, 1991, 1992, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms