TortoiseSVN and commit-access-control.cfg - windows

In TortoiseSVN, where is the "hooks" directory? Where to place commit-access-control.cfg in order to manage control access? Thanks
To make it clearer:
Where does TortoiseSVN install svn on Windows? I've always done it manually in Unix, Tortoise simply created all by itself and I have no idea of where the local repository is. Thanks

When you issue this command:
svnadmin create /some/local/repo
... you are creating a repository in given path ("/some/local/repo"). The GUI alternative provided by TortoiseSVN is as follows:
Open Windows explorer
Browse to the folder where you want your repository (e.g. "C:\MyData\")
Create an empty folder (e.g. "C:\MyData\ProjectFoo")
Right click in the newly created folder and select "TortoiseSVN -> Create repository here"
Thus there's little chance that TortoiseSVN will choose the repository location for you. (And of course this has nothing to do with the location of working copies or TortoiseSVN itself.)
You can find the "hooks" folder inside your repo (e.g. "C:\MyData\ProjectFoo\hooks").
(You appear to be using a Perl hook script. You'll need a working Perl interpreter to run it.)

TortoiseSVN is an subversion client software. The hooks folder is present in subversion server. Read more here.

The directory should go with each svn respoitory, not with the tortoisesvn program.

Related

Visual Studio new Project with wrong git repository

When I create a new project, I connect it with the git source from another existing project, this one is totally new and I don't know why it takes the sources control from the other ones without asking or anything.
For example, I have my project "A" on my computer, connected with git, today I tried to create project "B", and from the beginning, it connects with the git from the project "A", and says that I have tons of changes.
How could I avoid that o change it?
You can delete the .git folder or you can simply change the repository URL as below
Changing a remote repository's URL
The git remote set-url command changes an existing remote repository URL.
git remote set-url origin https://github.com/USERNAME/REPOSITORY.git
Looks like there's a .git folder in your new project directory. Try deleting that and it should work when you connect it again.
I had the same issue and I know how to solve it. For some reason, VSC (Visual Studio Code) has the wrong path for the git folder.
How to fix it:
1.
When you hover your mouse here:
you will see that path (mine pointed to the whole desktop). Delete it in explorer.
2.
In my case, that was all I needed to do. After that VSC found a proper git file.

Synchronizing Visual SVN with IIS for web development (or to any other folder)

How to get the latest version of the project file to another folder on every commit?
I'm using VisualSVN server and I think we can do this on post-commit in hooks, but I don't know how. Server is on Windows.
Actually I need to get the latest version of the file to \www folder of IIS7. Simply, get the latest file to another folder.
I've added following code in post-commit hook (for copying latest version files to D:\Destination).
svn export --force file:///D:/Repositories/myproject D:\Destination
exit 2
It works fine for me.
If your trying to export this to a directory of website, need to change the directory permission. Visual SVN is using NETWORK SERVICE.
If you use the same file in more than single folder inside your repository and you Subversion is 1.6 or newer, you can use file-type of svn:externals without binding to revision.
In this case committed to SOURCE file will be updated in Working Copy of TARGET after usual svn up
but I don't know how
You correctly say that you have to do it by post-commit, but if you mean you don't know the process, here is how.
Your post-commit hook is a script which is called after every commit to a project in your SVN repository. There is a file called post-commit in the hooks folder of every repository. Change the file to include the necessary commands* to do the copying for you and make it an executable post-commit.exe.
Afterwards, every time you commit a new revision, that script should handle it for you.
*By necessary commands I mean, either do the copying via the Windows cmd prompt, or call another script to do the job from within post-commit.exe.
Also, even though SVN docs mention that the post-commit hook needs to be either .bat or .exe file, I've had it working only when it's .exe on my machine.
You can convert .bat files into binary .exe using tools available here and here. The second one is much more user-friendly. I hope it helps.

How to checkout a subfolder from a local svn copy (and not the svn server)?

For some simple Windows batch script, I want to temporarily create a copy of a certain folder in an local working copy of an svn repository at a certain revision. I do not want to checkout directly from the svn server (because then my script needs to know what the server address is, and potentially I would need to authenticate etc.)
And I can not just copy the subfolder, as the hidden .svn folder is higher up.
I have been trying some variations on (with the repo folder containing the .svn hidden folder):
svn co file:///E:/repo/paper#48 E:/temprepo
But that doesn't work. My Windows 7 command prompt answers with
svn: E180001: Unable to connect to a repository at URL 'file:///E:/repo/paper'
svn: E180001: Unable to open an ra_local session to URL
svn: E180001: Unable to open repository 'file:///E:/repo/paper'
I am doing something wrong, or is what I am trying impossible?
Your question seems bit ambiguous. I can think of two ways of looking at this.
Assuming you just want a copy of a sub-folder in a svn working copy WITHOUT the .svn folders.
You can use svn export to copy a given sub-folder of a working copy like this - svn export E:\repo\paper E:\temprepo.
Quote:
And I can not just copy the subfolder, as the hidden .svn folder is
higher up.
EDIT: This file structure is only available in subversion v 1.7. In a subversion client with version 1.6.x sub-folders in a working copy should be self-contained. Meaning you may duplicate it to another place, and do subversion operations like svn update etc. in it.
As you have rightly mentioned in your question, you have working copy of subversion repository and not the repository it self.
You can check out only for a repository that happens to be your subversion server.
When you check out your repository, a pristine version of the repository contents are located inside the ".svn" folders.
This is how svn shows you the diff when your working copy differs from the original contents without routing it's request to server.
It also keeps meta data of your server address and other information which you can see when you do svn info. This also contains your server address as svn url.
Your working copy and the ".svn" folders fully recognize the repository from which it was checked out.
I hope you have understood why you can not checkout from your own working copy.

How to add a new project to source control in Xcode 4?

How do I add a new project to source control (SVN) using Xcode 4?
Open Organizer. Click on the root of your SVN repository in the tree on the left. Click on Import on the bottom right and choose the directory from finder that you want to add and click Import.
This will add the project to SVN
The XCode 4 documentation recommend using command-line tools or a utility program to set up a Git or Subversion repository.
To set up a Subversion repository using the command line
1/ Open the Terminal utility and use the svnadmin create command to create a Subversion repository.
For example, if you want a repository named Sketch_svn in the existing location /Users/myUserName/Repositories, you would enter the command:
svnadmin create /Users/myUserName/Repositories/Sketch_svn
Tip: The easiest way to get the full path to a folder into Terminal without risking typing errors is to first type the command (cd in this case), enter a space, and then drag the folder from the Finder and drop it at the end of the Terminal command line.
Note that the directory /Users/myUserName/Repositories/ must already exist before you execute this command. You can use the Finder or a mkdir command to create the directory.
2/ In another location—not in the repository you just created—create a folder to hold a temporary copy of the project. In that folder, create three additional folders named branches, tags, and trunk.
3/ Create a new Xcode project in the trunk folder, using Xcode, or put your existing project in the trunk folder, using the command line or the Finder.
4/ Use the svn import function to import your project into the repository you created and place it under Subversion source control.
For example, if your temporary copy is in /Users/myUserName/Projects/Sketch_tmp, you would enter the following command in Terminal:
svn import /Users/myUserName/Projects/Sketch_tmp \
file:///Users/myUserName/Repositories/Sketch_svn -m "Initial import"
Notes
The backslash at the end of the first line indicates that the command is continued on the next line. You can omit the backslash and type the entire command on one line. If you do use the backslash, be sure there are no spaces following it before you press Return.
There are three forward slashes in the string file:///.
If you type the entire command on one line, be sure there is a space before file:///.
You can include any comment you want in the quotation marks, but be sure your comment will be meaningful to anyone using the repository.
5/ In the repositories organizer in Xcode, click the Add (+) button at the bottom of the navigator pane, and choose Checkout Repository to create a working copy.
Use Terminal. At the command line, you can use the svn import command to add the project to your repository.
From the way you worded your question, I'm assuming that your subversion repository already exists. You'll follow the same basic steps outlined in Add Git or Subversion Version Control to an Existing Project in the Xcode 4 Users Guide, except that instead of creating a whole new repository you'll just add a new directory to your existing repository.
It's handy that Xcode has support for version control, but it's not a full-featured GUI version control client. You should still know how to manage your repository using the svn command line program. Alternately, you can get a GUI front end like Versions. Either way, you should have (and have read) the Subversion Book. There's a lot more to using version control than just checking files in and out, and you need to know how it works and how best to use it if it's going to help you.

How do I keep Resharper Files out of SVN?

I am using VS2008 and Resharper. Resharper creates a directory _Resharper.ProjectName. These files provide no value for source control that I am aware of and cause issues when committing changes. How can I get SVN to ignore them? I am using TortoiseSVN as my interface for SVN.
EDIT: You guys are fast.
Here's a link to show the ignoring process in TortoiseSVN
Add the file names (or even the pattern _Resharper.*) to the svn:ignore property for its parent directory.
Gonna post an answer to my own question here as I read the manual after I typed this up. In TortoiseSVN, goto settings. Add
*ReSharper*
to the "Global ignore pattern". Adding items to the global ignore pattern means that these files will be ignored for any project you work on for the client with TortoiseSVN installed, so it might not be appropriate to use the global ignore in all cases.
You can also add specific files and directories to the ignore list for individual projects if you select this from the TortoiseSVN menu BEFORE they have been added to your repository. The "BEFORE" part is what tripped me up originally. Since this is a single developer project, I've been checking in binaries, etc. b/c it has no consequence for other developers, and the Resharper files got in there.
Store Resharper caches in system temp folder.
Check First setting page in r#.
Environment -> General -> System -> Store caches ..
Short answer: the "svn:ignore" property
Long answer:
# cd /your/working/copy
# export EDITOR=vi
# svn propedit svn:ignore .
(add "_Resharper.ProjectName" on its own line and write the file out)
Edit: erg... doh, just realized you said tortoise... this is how you do it with the command-line version of SVN
svn has an "ignore" property you can attach to a filename pattern or a directory. Files and directories that are ignored won't be reported in "svn st" commands and won't go into the repo.
Example: you have C source code in .c and .h files, but the compiler creates a bunch of .o files that you don't want subversion to bother telling you about. You can use Subversion's properties feature to tell it to ignore these.
For a few files in one checked-out working directory, for example myproject/mysource/
bash> svn propedit svn:ignore mysource
In the text editor that pops up (in linux, probably vi or whatever your EDITOR env var is set to), add one filename pattern per line. Do not put a trailing space after the pattern (this confuses svn).
*.o
*.bak
That's all. You may want to do a commit right away, since sometimes svn gets fussy about users making too many different kinds of changes to files between commits. (my rule is: if in doubt, commit. It's cheap)
For a type of file appearing in many places in a sprawling directory tree, edit the subversion config file kept inside the repository. This requires the repository administrator's action, unless you have direct access to the repository (not through svn: or http: or file:, but can 'cd' to the repository location and 'ls' its files). The svn books should have the details; i don't recall offhand right now.
Since i don't use Tortoise, i don't know how directly the description above translates - but that's why we have editable answers (joy!)
This blog post provides a example on how to do what you want on via command line svn.
http://sdesmedt.wordpress.com/2006/12/10/how-to-make-subversion-ignore-files-and-folders/
These change will be reflected in TortoiseSVN.
I believe there is a way to do it via tortoise however i don't have a windows vm accessible atm, sorry :(
SVN only controls what you put into it when creating your repository. Don't just import your entire project folder but import a "clean" folder BEFORE doing a build. After the build you get all the object files or your _Resharper folder etc. but they are not version controlled.
I forgot: the svn:ignore command is another possibility to tell SVN to exclude certain files. You can add this as a property to the version controlled folders, e.g. with TortoiseSVN.

Resources