mirror of
https://github.com/Stone-Red-Code/dvc.git
synced 2026-11-11 15:28:27 +01:00
merge: don't forget to checkout cache_state file
Signed-off-by: Ruslan Kuprieiev <[email protected]>
This commit is contained in:
@@ -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
@@ -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)
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user