mirror of
https://github.com/NixOS/nix.git
synced 2025-11-26 04:00:59 +01:00
States can now be (recursively) rolled back and forward :)
This commit is contained in:
parent
9f00b42f38
commit
afb445957d
4 changed files with 25 additions and 18 deletions
|
|
@ -3,11 +3,13 @@
|
||||||
svnbin=$1
|
svnbin=$1
|
||||||
torevision=$2
|
torevision=$2
|
||||||
repos=$3
|
repos=$3
|
||||||
|
statepath=$4
|
||||||
|
|
||||||
if [ "$#" != 3 ] ; then
|
if [ "$#" != 4 ] ; then
|
||||||
echo "Incorrect number of arguments"
|
echo "Incorrect number of arguments"
|
||||||
exit 1;
|
exit 1;
|
||||||
fi
|
fi
|
||||||
|
|
||||||
$svnbin merge -r HEAD:$2 $3
|
cd $statepath
|
||||||
|
$svnbin merge -r HEAD:$torevision $repos
|
||||||
|
cd -
|
||||||
|
|
|
||||||
|
|
@ -3,11 +3,13 @@
|
||||||
svnbin=$1
|
svnbin=$1
|
||||||
torevision=$2
|
torevision=$2
|
||||||
repos=$3
|
repos=$3
|
||||||
|
statepath=$4
|
||||||
|
|
||||||
if [ "$#" != 3 ] ; then
|
if [ "$#" != 4 ] ; then
|
||||||
echo "Incorrect number of arguments"
|
echo "Incorrect number of arguments"
|
||||||
exit 1;
|
exit 1;
|
||||||
fi
|
fi
|
||||||
|
|
||||||
$svnbin merge -r HEAD:$2 $3
|
cd $statepath
|
||||||
|
$svnbin merge -r HEAD:$torevision $repos
|
||||||
|
cd -
|
||||||
|
|
|
||||||
|
|
@ -196,9 +196,8 @@ LocalStore::LocalStore(bool reserveSpace)
|
||||||
dbComponentStateReferrers = nixDB.openTable("referrers_c_s", true);
|
dbComponentStateReferrers = nixDB.openTable("referrers_c_s", true);
|
||||||
dbStateComponentReferrers = nixDB.openTable("referrers_s_c", true);
|
dbStateComponentReferrers = nixDB.openTable("referrers_s_c", true);
|
||||||
dbStateStateReferrers = nixDB.openTable("referrers_s_s", true);
|
dbStateStateReferrers = nixDB.openTable("referrers_s_s", true);
|
||||||
dbStateRevisions = nixDB.openTable("staterevisions", true);
|
dbStateRevisions = nixDB.openTable("staterevisions");
|
||||||
|
|
||||||
|
|
||||||
int curSchema = 0;
|
int curSchema = 0;
|
||||||
Path schemaFN = nixDBPath + "/schema";
|
Path schemaFN = nixDBPath + "/schema";
|
||||||
if (pathExists(schemaFN)) {
|
if (pathExists(schemaFN)) {
|
||||||
|
|
|
||||||
|
|
@ -237,11 +237,14 @@ static void queryAvailableStateRevisions(Strings opFlags, Strings opArgs)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
string revisions_txt="";
|
//Sort ourselfes to create a nice output
|
||||||
|
vector<int> revisions_sort;
|
||||||
for (RevisionNumbers::iterator i = revisions.begin(); i != revisions.end(); ++i)
|
for (RevisionNumbers::iterator i = revisions.begin(); i != revisions.end(); ++i)
|
||||||
{
|
revisions_sort.push_back(*i);
|
||||||
|
sort(revisions_sort.begin(), revisions_sort.end());
|
||||||
|
string revisions_txt="";
|
||||||
|
for (vector<int>::iterator i = revisions_sort.begin(); i != revisions_sort.end(); ++i)
|
||||||
revisions_txt += int2String(*i) + " ";
|
revisions_txt += int2String(*i) + " ";
|
||||||
}
|
|
||||||
printMsg(lvlError, format("Available Revisions: %1%") % revisions_txt);
|
printMsg(lvlError, format("Available Revisions: %1%") % revisions_txt);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -282,7 +285,10 @@ static void revertToRevision(Strings opFlags, Strings opArgs)
|
||||||
p_args.push_back(nixSVNPath + "/svn");
|
p_args.push_back(nixSVNPath + "/svn");
|
||||||
p_args.push_back(int2String(revision_arg));
|
p_args.push_back(int2String(revision_arg));
|
||||||
p_args.push_back("file://" + repos);
|
p_args.push_back("file://" + repos);
|
||||||
|
p_args.push_back(statePath);
|
||||||
string output = runProgram(nixLibexecDir + "/nix/nix-restorerevision.sh", true, p_args); //run
|
string output = runProgram(nixLibexecDir + "/nix/nix-restorerevision.sh", true, p_args); //run
|
||||||
|
|
||||||
|
printMsg(lvlError, format("Reverted statePath '%1%' to revision: %2%") % statePath % int2String(revision_arg));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -570,9 +576,12 @@ void run(Strings args)
|
||||||
op = opShowDerivations;
|
op = opShowDerivations;
|
||||||
else if (arg == "--showrevisions")
|
else if (arg == "--showrevisions")
|
||||||
op = queryAvailableStateRevisions;
|
op = queryAvailableStateRevisions;
|
||||||
else if (arg.substr(0,21) == "--revert-to-revision=")
|
else if (arg.substr(0,21) == "--revert-to-revision="){
|
||||||
op = revertToRevision;
|
op = revertToRevision;
|
||||||
|
bool succeed = string2Int(arg.substr(21,arg.length()), revision_arg);
|
||||||
|
if(!succeed)
|
||||||
|
throw UsageError("The given revision is not a valid number");
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
||||||
|
|
@ -604,11 +613,6 @@ void run(Strings args)
|
||||||
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
else if (arg.substr(0,21) == "--revert-to-revision="){
|
|
||||||
bool succeed = string2Int(arg.substr(21,arg.length()), revision_arg);
|
|
||||||
if(!succeed)
|
|
||||||
throw UsageError("The given revision is not a valid number");
|
|
||||||
}
|
|
||||||
else if (arg.substr(0,13) == "--identifier=")
|
else if (arg.substr(0,13) == "--identifier=")
|
||||||
stateIdentifier = arg.substr(13,arg.length());
|
stateIdentifier = arg.substr(13,arg.length());
|
||||||
else if (arg.substr(0,7) == "--user=")
|
else if (arg.substr(0,7) == "--user=")
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue