diff --git a/bridge.go b/bridge.go
index <HASH>..<HASH> 100644
--- a/bridge.go
+++ b/bridge.go
@@ -353,6 +353,8 @@ func (b *bridge) SyncSourceFor(id ProjectIdentifier) error {
 	return b.sm.SyncSourceFor(id)
 }
 
+func (b *bridge) Release() { b.sm.Release() }
+
 // versionTypeUnion represents a set of versions that are, within the scope of
 // this solver run, equivalent.
 //
diff --git a/source_manager.go b/source_manager.go
index <HASH>..<HASH> 100644
--- a/source_manager.go
+++ b/source_manager.go
@@ -66,6 +66,11 @@ type SourceManager interface {
 	// DeduceRootProject takes an import path and deduces the corresponding
 	// project/source root.
 	DeduceProjectRoot(ip string) (ProjectRoot, error)
+
+	// Release lets go of any locks held by the SourceManager. Once called, it is
+	// no longer safe to call methods against it; all method calls will
+	// immediately result in errors.
+	Release()
 }
 
 // A ProjectAnalyzer is responsible for analyzing a given path for Manifest and
Add Release() to the SourceManager interface

This is already being used by dep.