merge: don't forget to checkout cache_state file

Signed-off-by: Ruslan Kuprieiev <[email protected]>
This commit is contained in:
Ruslan Kuprieiev
2017-11-26 13:38:23 +02:00
parent 096c842063
commit c5648a33ec
3 changed files with 17 additions and 13 deletions
+3 -2
View File
@@ -22,9 +22,10 @@ class CmdCheckout(CmdBase):
return True
def checkout(self, items):
@staticmethod
def checkout(items):
for item in items:
if self.cache_ok(item):
if CmdCheckout.cache_ok(item):
continue
if os.path.isfile(item.data.relative):
+12 -9
View File
@@ -6,6 +6,8 @@ from dvc.logger import Logger
from dvc.state_file import StateFile
from dvc.path.data_item import DataItem
from dvc.system import System
from dvc.command.checkout import CmdCheckout
class CmdMerge(CmdBase):
@@ -33,7 +35,7 @@ class CmdMerge(CmdBase):
for item in items:
try:
state = StateFile.load(item, self.git)
state = StateFile.load(item, self.settings)
except Exception as ex:
Logger.error('Failed to load state file for {}'.format(item.data.relative), exc_info=True)
return None
@@ -49,16 +51,17 @@ class CmdMerge(CmdBase):
data = []
for item in targets:
self.git.checkout_file_before_last_merge(item.state.relative)
self.git.checkout_file_before_last_merge(item.cache_state.relative)
# Reload data item, so we can get restored cache
new_item = self.settings.path_factory.data_item(item.data.relative)
if os.path.isfile(new_item.data.relative):
os.remove(new_item.data.relative)
System.hardlink(new_item.cache.relative, new_item.data.relative)
data.append(item.data.relative)
CmdCheckout.checkout([item])
# if os.path.isfile(item.data.relative):
# os.remove(item.data.relative)
#
# System.hardlink(item.cache.relative, item.data.relative)
#
# data.append(item.data.relative)
#
msg = 'DVC merge files: {}'.format(' '.join(data))
self.commit_if_needed(msg)
+2 -2
View File
@@ -45,11 +45,11 @@ git merge bar
# way dvc knows to favor data files from current branch.
dvc merge
# Verify that data and respective state file are restored properly
# Verify that data and respective cache state file are restored properly
if [ "$(dvc_md5 data/data)" != "$ORIG_DATA" ]; then
dvc_fail
fi
grep $(echo "$ORIG_DATA" | cut -d " " -f1) .dvc/state/data/data.state || dvc_fail
grep $(echo "$ORIG_DATA" | cut -d " " -f1) .dvc/state/data/data.cache_state || dvc_fail
dvc_pass