Make a node project directory and SVN repository - node.js

I have a node app running on production server ~/nodeapp
I am trying to turn /username/nodeapp to an SVN repos
Since this is running on live server!! here are the steps I took
Create a repo
svnadmin create ~/nodeapp.svn
Set permission
vi ~/nodeapp.svn/conf/svnserve.conf
and add the following:
anon-access = none
auth-access = write
password-db = passwd
Import ~/nodeapp into the ~/nodeapp.svn
svn import ~/nodeapp file:///home/nodeapp.svn
Finally Rename Folders
mv ~/nodeapp ~/nodeapp.bak
mv ~/nodeapp.svn ~/nodeapp
nodeapp should now be under version control.. however pages are not loading
when I
cd ~/nodeapp && node app.js
What am I doing wrong. Why is node under SVN Repo not working

Subversion repositories are nothing like git repositories, which it looks like you're trying to emulate here. You cannot run your Node app directly out of the Subversion repository.
Instead, you need to have your repository elsewhere (on the filesystem or on a Subversion server elsewhere). Commit your code to the repository and check out a working copy to ~/nodeapp for your application to run.
You really need to read the Subversion manual, and pay special attention to the "Version Control the Subversion Way" section. Also, the FAQ entry about running a website with the code managed by Subversion may be helpful

Related

Git Update Files on Repo Change

I have a VPS running a Node.js / React app.
I want to update the files in the vps each time I push data to the git(hub).
I found out, using this answer, that I can add some hooks in git, executing commands on "post-receive".
What I didn't quite understand :
Why did he init another git ? Couldn't he have done this in the .git directory and create the hooks/post-receive file?
Why git checkout -f ? If the goal is to update local files, so nodemon / create-react-app restarts the server / app, why not execute a git pull instead ?
Is there a better way of doing this ?
In the recommended answer there, nobody is using GitHub and there is no other Git repository yet. So the answer to your question:
Couldn't he have done this in the .git directory and create the hooks/post-receive file?
is: No, there was no .git directory in the first place. The target machine had nothing at all, no Git repository, no working tree, etc. The git init --bare created the Git repository (the ".git directory").
The git checkout -f is a poor-man's / low-quality implementation of push to deploy. A receiving repository is normally "bare", and this one is no exception.
why not execute a git pull instead ?
That would require creating a third Git repository. That would have been an option.
"Better" is in the eye of the beholder. There are many ways of doing this, each with its own pluses and minuses. See also Deploy a project using Git push, which notes that since Git 2.3, receive.denyCurrentBranch = updateInstead is available; it was not available prior to 2015 (and in 2015, many people had older versions of Git installed).
Note further that if you're using GitHub as a hosting system, this changes a number of variables. The questions and answers you and I have linked here are aimed at those not using GitHub.

how to start storing Eclipse project to local svn repository? (fresh install of everything)

I've just installed Ubuntu, Eclipse 4.4 Luna C/C++, everything with default settings. I've created my first c++ project and want to start storing entire Eclipse workspace in svn repository (also I expect Eclipse GUI to work with repository). SVN repository itself i want to store locally (likely in Dropbox folder).
What steps should I do?
upd That's how I solved my problem:
To install subversion in Ubuntu execute sudo apt-get install subversion
In Eclipse just go to Help-Install new software. Select "all available sites" and type "Subversive" install everything
After Eclipse restart install "SVNKit" connector of the same version as svn --help
In SVN Repository Exploring perspective just click "New Repository" and follow instructions.
Don't store the entire workspace in SVN, just store the project.
Install SVN on a machine, pay attention to the svn admin tools.
svnadmin create /path/to/root/of/repo
Edit the /path/to/root/of/repo/config/svnserve.conf
Uncomment anon-access = whatever and change it to anon-access = none
Uncomment auth-access = whatever and change it to auth-access = write
Uncomment password-db = passwd
Edit the /path/to/root/of/repo/config/passwd
Add under the [users] section a line that looks like yourUserName = yourPassword
Find the instructions for your operating system to configure the program svnserve to run.
Now you should be able to checkout to other machines, you'll still need to "finish off" the respository you created. It needs tags/trunk/branches.
svn checkout svn://hostname.of.server/repo
cd repo
mkdir trunk tags branches
svn add trunk tags branches
svn commit -m "Initial repository setup"
after you get the messages the commit succeeded
cd ..
rm -rf repo
svn co svn://hostname.of.server/repo/trunk repo
(and use that as the root of your Eclipse project directory)
I highly recommend doing the last checkout in the IDE, after adding in the SVN support bundles.

How to copy files in an svn repo to another folder on the server

Running a centos 6 server with svn repos stored on it. To deploy updates, I'd like to copy from the relevant directory within the svn repo to the appropriate /var/www website directory. Is there a simple way to do this?
Use the svn export command to do that. The subversion red book explains in detail how to do that.
When the relevant svn repo is stored under /export/svn/repo, and the part of the repository you want to copy from is /trunk/my_project/news, the whole command will be:
svn export file:///export/svn/repo/trunk/my_project/news /var/www/news

Bare Git repo cannot add files or commit files

So I have been plagued with this weird git problem that myself and a few other developers have not been able to solve. Here it is:
I created a bare repo for managing website changes using git on test server.
For this example the repo is here: /home/website/website.git
The website public root would be here: /home/website
I created the repo by doing this command: git init --bare
inside the git repo directory "website.git"
Next I have my local repo on a machine elsewhere. This is a standard git repo. I build the site get it ready to deploy. When its ready I push it to the bare repo. From my local repo.
There is a post-receive hook that checks the latest file tree out into the public root of the website. So when I change things on the local repo and test them in the localhost environment, once satisfied I can push them to the live server.
Here is the problem I face:
I can push fine. No issues. All works as expected. Code gets checked out to public root. Everybody is happy and goes on with their life.
BUT!!!:
The site is a CMS site. Users log in to it and upload things. Files get created on the public root of the website which is the GIT_WORK_TREE.
So NBD right?! I can just commit the files every now and then from the live bare repo and pull them back to my local environment like I have before. So I log into SSH on the server. Navigate to /home/website/website.git
Then run this command:
GIT_WORK_TREE=/home/website/ git add ../
I get this mess:
error: unable to create temporary sha1 filename ./objects/cb: No such file or directory
error: error_log: failed to insert into database
error: unable to index file error_log
fatal: adding files failed
I have done this before on other servers and it worked fine from what I remember. So I was like WTF, must be something strange on this server. I went to another server I have and replicated the EXACT same steps. Got the EXACT same problem. So now I fear I am loosing my sanity and maybe these previous git experiences are all made up in my head.... *Well, lets not go that far yet.... :)
Maybe somebody can help me out here. I have used git plenty and can't seem to crack this one.
Oh, some other maybe useful specs:
running CENTOS 6.2
I double checked all permissions. I even tried changing everything to 777 recursively just to make sure Im not loosing it somehow. Made sure all the files are owned by the correct user. chowned recursively. I also tried the standard solution to this problem which is described here: https://answers.atlassian.com/questions/132671/git-commit-fails-with-sourcetree-error-unable-to-create-temporary-sha1-filename-git-objects-d8-file-exists
That didnt work either. Not sure where to go from here.
PLEASE HELP ME!!!!
I feel like Linus is playing cruel tricks on me right now.
You have a bare git repository in /home/website/website.git which is inside of a git repository in /home/website? And then you try to trick the bare git repository into having a working tree using GIT_WORK_TREE?
Maybe it is worth understanding this setup but only if you intend to be a git developer. As you are a user focused on delivering website functionality, I suggest using a standard git setup.
Move the bare git repository elsewhere:
$ mkdir /home/repo
$ mv /home/website/website.git /home/repo/website.git
$ cd /home/website
$ git remote set-url origin /home/repo/website.git
I got the solution. This is it. I was running the above command from the git repo.
Turns out the command should be run from the work tree and altered to look like this:
GIT_WORK_TREE=/home/website/ git --git-dir="./website.git/" add ./

Copying files from svn repository

I wanna copy files and folders from my svn repository on server, but I dont want to install svn client, can I do it without svn client?
PS server - linux (CentOS 5.5), svnadmin version 1.4.2 (r22196)compiled Aug 10 2009, 17:54:46.
UPD: files are already exported to server: I want to import files from svn repository to directory, where web-server runs. For example: svn repository located at /var/svn/repos, I wanna dump repository to /var/www, but in /var/svn/repos no files I needed.
PSS sorry for my bad english =\
The Subversion repository isn't in a readable format that you can peruse like you could with CVS. To read the files in the repository you need someone with a client somewhere.
If your Subversion repository uses Apache httpd for its server, you can use wget or curl to pull off the last revision on a specific directory since as an added bonus, the Subversion Apache httpd modules allow you to see the latest version.
$ wget http://svn/repos/foo/trunk/myfile.java
The other option is to use a Subversion repository browser like (ViewVC)[http://www.viewvc.org/] or Sventon. These will allow you to browse the entire repository (including older revisions) without having to install the Subversion client on the local machine. I like Sventon because it doesn't have to run from the Subversion repository server.
If you're on Centos 5.5, you should already have the Subversion command line client installed on your system. In that case, if you don't want the .svn directories, use the svn export command instead of svn checkout.
Or, setup your web server to ignore the .svn directories. That way, you can do an svn update and update the files on your web server without having to redownload everything.
Well, if you have physical access to the server you could use the Subversion client on that box to export files/folders and then copy them from the server to the client machine. If you're trying to do this purely from the client, the only way I can think of would be to manually download the file(s) from the web client but this will only work if you're using Apache as your Subversion server.
Unless the server has an HTTP interface (is the repository URL prefixed with http://? Just open it up in a web browser), no.
It might be simplest to export the files you want on the server (svn export file://repo/path/to/directory), then copy them to the client using http or scp or something.

Resources