1
1
Fork 0
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:
Wouter den Breejen 2007-07-08 22:59:44 +00:00
parent 9f00b42f38
commit afb445957d
4 changed files with 25 additions and 18 deletions

View file

@ -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 -

View file

@ -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 -

View file

@ -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)) {

View file

@ -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=")