revert: support smart recursive reversion for externals