言語の論理構造ベースでチェックアウトできるバージョン管理システムってありませんか?

例えば物理的に同一ファイルに定義されている
メソッドの中身だけ編集する場合はクラスをチェックアウトする必要が無い、みたいな。