Jump to content

  • Log In with Google      Sign In   
  • Create Account

We're offering banner ads on our site from just $5!

1. Details HERE. 2. GDNet+ Subscriptions HERE. 3. Ad upload HERE.


Easy-to-use Version Control on Windows? Needs to be able to easily ignore certain files.

  • You cannot reply to this topic
28 replies to this topic

#1 SymLinked   Members   -  Reputation: 879

Like
0Likes
Like

Posted 08 August 2013 - 11:57 AM

Hi,

I've used SVN before and their client-side ignorelist (their server-side one is useless as it is per folder) but I need it to be version controlled so others who Checkout get it too.

 

I've looked at Perforce but it's not exactly affordable for me, and it uses a different system than what I'm used to (I want Checkout/Update/Commit).

I've looked at Bazaar but it is a nightmare to setup as a server on Windows.

 

Does anyone have any suggestions? Is Mercurial any better?



Sponsor:

#2 SiCrane   Moderators   -  Reputation: 9629

Like
8Likes
Like

Posted 08 August 2013 - 12:04 PM

I mostly use git on Windows nowadays. It has a .gitignore file that gets versioned with the rest of the files. I generally use cygwin's git from the command line but there are also GUI interfaces like tortoisegit (which I never got to work) and Git Extensions (which I have).



#3 Promit   Moderators   -  Reputation: 7342

Like
3Likes
Like

Posted 08 August 2013 - 12:35 PM

I vote for git, and I usually use a combination of the command line client and a graphical client called SmartGit that I'm quite fond of.



#4 DanKennard   Members   -  Reputation: 177

Like
5Likes
Like

Posted 08 August 2013 - 12:54 PM

Another vote for Git. I mostly work with it via the command line but I'm growing quite fond of Sourcetree as a GUI



#5 bladeofodinx   Members   -  Reputation: 161

Like
0Likes
Like

Posted 08 August 2013 - 01:37 PM

don't know what client your using but svn CAN ignore more than just a folder [ and have those settings not just be client side only! ]

TortoiseSVN can ignore folders, files [recursively even] and i would bet also by using a regular expression too.

 

Nowadays i actually use Mercurial with sourcetree but TortoiseSVN is still nice and good and easy.



#6 SymLinked   Members   -  Reputation: 879

Like
0Likes
Like

Posted 08 August 2013 - 03:45 PM

Thanks for the suggestions!

I've heard Git is cumbersome to setup as server, which is one of my requirements. Might try it though.

 

don't know what client your using but svn CAN ignore more than just a folder [ and have those settings not just be client side only! ]

TortoiseSVN can ignore folders, files [recursively even] and i would bet also by using a regular expression too.

I guess you're thinking of svn:ignore, which doesn't work like that. You have to add it to every directory you commit. You can't place it on the topmost directory. This is well documented.



#7 markr   Crossbones+   -  Reputation: 1653

Like
3Likes
Like

Posted 08 August 2013 - 04:12 PM

SVN has an ignore property (svn:ignore) which is versioned exactly like anything else. You can change it, commit the changes and then everyone else gets it.

 

What exactly, is the problem



#8 SymLinked   Members   -  Reputation: 879

Like
0Likes
Like

Posted 08 August 2013 - 04:21 PM

See this link for what I'm talking about. It's not recursive, which is what I've described in my last post.



#9 Nypyren   Crossbones+   -  Reputation: 4500

Like
6Likes
Like

Posted 08 August 2013 - 06:15 PM

Git's difficulty tends to scale with the size of your team.  It's trivial to use for a handful of people, but as the team gets larger, the amount of times people (and most problematically, non-programmers) will be exposed to git's confusing conflict resolution workflow will spiral out of control.



#10 hatfarm   Members   -  Reputation: 224

Like
4Likes
Like

Posted 08 August 2013 - 08:49 PM

I use git at home and at work.  At home, I pretty much just use the command line, but at work we use Git Extensions and we like it quite a bit.  We've not really had any major issues with merge conflicts, except with binary objects (simulink models) and that hasn't been a huge deal.  Using .gitignore is pretty easy and can be very robust, I have literally never seen a file I didn't need to push at work.  At home, it's not a huge deal because I know every file anyway, but I do use a .gitignore to get rid of some of the stuff.



#11 Hodgman   Moderators   -  Reputation: 31122

Like
4Likes
Like

Posted 08 August 2013 - 10:56 PM

I've heard Git is cumbersome to setup as server, which is one of my requirements. Might try it though.

Depends what kind of "server" you need. Git is decentralized, so there's a lot of ways you can set it up.
 
Every "client's" project directory is also a server -- e.g. when working on my local network, I just share my project directory using windows file sharing, and pull/push changes to other PCs on my network without there being an explicit "server" -- just many clients communicating via a shared windows file system.
 
To set up a simple web-accessible central server, I just cloned my project into a linux server that has sharing enabled over SSH. Anyone who has access to the server using SSH already can now access this "git server".
 
For more advanced central servers (with access control, etc), check out gitosis and gitolite, or just use GitHub ;)

 

When coming from a centralized version control background (SVN, CVS, Perforce, AlienBrain, etc), git can be confusing at first... but I now swear by it for managing code.


Edited by Hodgman, 08 August 2013 - 11:02 PM.


#12 Promit   Moderators   -  Reputation: 7342

Like
3Likes
Like

Posted 09 August 2013 - 12:07 AM

Setting up a git server is super easy, provided you have a server with SSH access and don't mind giving all project members shell access. Step outside those bounds and things get... less pleasant.



#13 anton_gogolev   Members   -  Reputation: 125

Like
6Likes
Like

Posted 09 August 2013 - 01:39 AM

Mercurial is much more humane on Windows compared to Git (IMO). Setting up Mercurial server on Windows is trivially simple with HgLab ( http://hglabhq.com/ ).



#14 l0calh05t   Members   -  Reputation: 798

Like
6Likes
Like

Posted 09 August 2013 - 05:03 AM


I've looked at Perforce but it's not exactly affordable for me, and it uses a different system than what I'm used to (I want Checkout/Update/Commit).

 

Isn't Perforce free for less than 20 users nowadays?



#15 Zipster   Crossbones+   -  Reputation: 774

Like
4Likes
Like

Posted 09 August 2013 - 01:43 PM

 


I've looked at Perforce but it's not exactly affordable for me, and it uses a different system than what I'm used to (I want Checkout/Update/Commit).

 

Isn't Perforce free for less than 20 users nowadays?

 

 

It is, plus Perforce actually does use a checkout/update/submit workflow because it's a centralized VCS.



#16 SymLinked   Members   -  Reputation: 879

Like
0Likes
Like

Posted 09 August 2013 - 02:43 PM

Perforce has a limit in their free edition of 20 workspaces, though. Won't you need one for each depot/repository like in SVN?

 

You can't just update/submit. You have to lock files before you change them.

 

Okay, I'll try Perforce. Thanks for the tips!


Edited by SymLinked, 09 August 2013 - 02:51 PM.


#17 SymLinked   Members   -  Reputation: 879

Like
0Likes
Like

Posted 09 August 2013 - 03:15 PM

Whatever. My files are set to read-only if I don't lock or mark them for edit beforehand. Hardly just a Commit/Update workflow..

Turns out this can be disabled per workspace. Fine. I still have to add the files before I can submit. I guess that's okay. Submited successfully. I now tested to delete the files locally and pressed Checkout. In SVN this (or Update) would restore the files. Perforce doesn't do that though, it throws up a CHMOD error. Very descriptive.


Edited by SymLinked, 09 August 2013 - 03:34 PM.


#18 MJP   Moderators   -  Reputation: 11589

Like
5Likes
Like

Posted 09 August 2013 - 06:55 PM

Yeah Perforce very much likes to be in control of files in the repo, and generally doesn't behave well when you go behind its back. So if you want to delete a file you have to tell P4 to delete it, and it will then delete it from your hard drive. If you happen to delete a file locally it won't even be aware it's gone, and if you try to sync on it (Get Latest in P4V) it won't replace it. The only way it will replace it is if you use -f to force a sync.



#19 l0calh05t   Members   -  Reputation: 798

Like
0Likes
Like

Posted 10 August 2013 - 02:42 AM

Reconcile offline work and then reverting the delete should work as well.



#20 SymLinked   Members   -  Reputation: 879

Like
0Likes
Like

Posted 10 August 2013 - 04:16 AM

Thanks, that's useful.
 

I also noticed SVN has reached 1.8 and they've added a global ignore property that is recursive!

Though it is only recursive for directory that have already been added. So if you set the global ignores property on the root and add a new directory which contains files that are on the ignore list, they will still get added because their parent directory hasn't been updated with the ignores property.


Edited by SymLinked, 10 August 2013 - 07:28 AM.






PARTNERS