Whenever synchronization is involved, git bundle
is interesting because:
- it creates only one file (easy to copy around), which is like a git repo (you can clone/pull from a bundle)
- it can create an incremental bundle (the first one is a full bundle, than you can use incremental ones, in order to select only the last commits, instead of the full history)
However, the repo at the other side would still get all the commits, through the pulls from the successive bundles.
Regarding incremental bundles, git bundle
man page:
<git-rev-list-args>
A list of arguments, acceptable to git rev-parse
and git rev-list
(and containing a named ref, see SPECIFYING REFERENCES below), that specifies the specific objects and references to transport.
For example, master~10..master
causes the current master reference to be packaged along with all objects added since its 10th ancestor commit.
While a rev-list like --since=30.days.ago master
would be possible, it is best to make sure the incremental bundle is build taking into account the last commit used by the last bundle (especially if that last commit is older than 30 days. If it is newer, then it doesn't matter if you take "too many" commits).