diff --git a/scripts/nix-statecommit.sh.in b/scripts/nix-statecommit.sh.in index e9590e0b6..074de5b20 100755 --- a/scripts/nix-statecommit.sh.in +++ b/scripts/nix-statecommit.sh.in @@ -95,8 +95,8 @@ function subversionSingleStateDir { for item in ${subitems[@]} do - if test -d $item; then #add or go recursive subitems - $debug svn -N add $item #NON recursively add the dir + if test -d $item; then #add or go recursive subitems + $debug svn -N add $item #NON recursively add the dir subversionSingleStateDir $item else $debug svn add $item @@ -116,9 +116,20 @@ do if test -d $path; then #if the dir doesnt exist, than we dont hav to do anything cd $path; - output=$($svnbin stat 2>&1 | grep "is not a working copy"); - if [ "$output" != "" ] ; then #if the dir exists but is not yet an svn dir: checkout repos, if it doenst exits (is removed or something) than we dont do anything - $debug ${checkouts[$i]}; + #HACK: I cant seem to find a way for bash to parse a 2 dimensional string array as argument, so we use a 1-d array with '|' as seperator + if ! test -d $path/.svn/; then #if the dir exists but is not yet an svn dir: checkout repos, if it doenst exits (is removed or something) than we dont do anything + checkoutcommand=""; + while true; do + if [ "${checkouts[$i]}" = "|" ]; then + break + let "i+=1" + fi + checkoutcommand="${checkoutcommand} ${checkouts[$i]}"; + let "i+=1" + done + + #echo $checkoutcommand; + $debug $checkoutcommand; fi if [ "${subversionedpathsCommitBools[$i]}" = "true" ]; then #Check if we need to commit this folder @@ -133,7 +144,6 @@ do cd - &> /dev/null; fi - let "i+=1" done diff --git a/src/libstore/store-state.cc b/src/libstore/store-state.cc index 961da852b..fca0aa76c 100644 --- a/src/libstore/store-state.cc +++ b/src/libstore/store-state.cc @@ -22,19 +22,19 @@ void updatedStateDerivation(Path storePath) //Create new repositorys, or use existing... //createStateDirs already does that ... - printMsg(lvlError, format("Resetting state drv settings like repositorys")); //Create a repository for this state location + //string repos = makeStateReposPath("stateOutput:staterepospath", stateDir, thisdir, drvName, stateIdentifier); //executeAndPrintShellCommand("mkdir -p " + repos, "mkdir"); //executeAndPrintShellCommand(svnadminbin + " create " + repos, "svnadmin"); //TODO create as nixbld.nixbld chmod 700... can you still commit than ?? + //createStateDirs + } - - void createStateDirs(const DerivationStateOutputDirs & stateOutputDirs, const DerivationStateOutputs & stateOutputs, const StringPairs & env) { Path statePath = stateOutputs.find("state")->second.statepath; @@ -69,6 +69,7 @@ void createStateDirs(const DerivationStateOutputDirs & stateOutputDirs, const De string repos = makeStateReposPath("stateOutput:staterepospath", stateDir, thisdir, drvName, stateIdentifier); executeAndPrintShellCommand("mkdir -p " + repos, "mkdir"); executeAndPrintShellCommand(svnadminbin + " create " + repos, "svnadmin"); //TODO create as nixbld.nixbld chmod 700... can you still commit than ?? +// //TODO Check if repos already exitst? if(d.type == "interval"){ intervalPaths.insert(statePath); @@ -88,4 +89,5 @@ void createStateDirs(const DerivationStateOutputDirs & stateOutputDirs, const De } + } diff --git a/src/nix-state/nix-state.cc b/src/nix-state/nix-state.cc index adceded2c..f150e78eb 100644 --- a/src/nix-state/nix-state.cc +++ b/src/nix-state/nix-state.cc @@ -19,6 +19,15 @@ using std::cout; typedef void (* Operation) (Strings opFlags, Strings opArgs); +/************************* Build time Functions ******************************/ + + + +/************************* Build time Functions ******************************/ + + + + void printHelp() { cout << string((char *) helpText, sizeof helpText); @@ -51,7 +60,7 @@ Derivation getDerivation_andCheckArgs(Strings opFlags, Strings opArgs, Path & co } //TODO check if this identifier exists !!!!!!!!!!! - + Derivation drv = store->getStateDerivation(componentPath); DerivationStateOutputs stateOutputs = drv.stateOutputs; @@ -167,7 +176,9 @@ static void opRunComponent(Strings opFlags, Strings opArgs) string fullstatedir = statePath + "/" + thisdir; if(thisdir == "/") //exception for the root dir fullstatedir = statePath + "/"; - Path statePath = fullstatedir; //TODO call coerce function + + + //Path fullStatePath = fullstatedir; //TODO call coerce function //TODO REMOVE? if(d.type == "none"){ nonversionedpaths.push_back(fullstatedir); @@ -221,7 +232,8 @@ static void opRunComponent(Strings opFlags, Strings opArgs) string commandsarray; for (vector::iterator i = checkoutcommands.begin(); i != checkoutcommands.end(); ++i) { - commandsarray += "\\\"" + *(i) + "\\\" "; + //#HACK: I cant seem to find a way for bash to parse a 2 dimensional string array as argument, so we use a 1-d array with '|' as seperator + commandsarray += "" + *(i) + " | "; } //make the call