source tree file status vs history and a few more questions
Asked by VM:

I'm really confused about this source tree

first of all, it's not revolving around a file browser, like P4. the only way to see my project in a tree-like fashion is in File Status, and even that by default is not set to tree. but in file status.... I don't get to see a file's history, branching...I have to go to Log / History for that, but here I don't get the tree, I get the most recent commits.. how can I possibly find my files in an unstructured list of 1 million commits?

to add more frustration, double clicking a file only works in some cases, not always. I have to Ctrl Shit O with tree view.... which is an impossible shortcut for one of the most important functions in this app. can I change it? why can't I just double click like in any browser?

Before and After only work in some cases, no idea why and when..seems to work for jpg files : / not for txt.

and why can I overwrite files in Windows if they are not checked out.. why is source tree/git not setting all project files to be read only/untouchable by default?.. can I enable that?

and I also managed to lose some text after saving a new version and reverting. instead of version one I had an empty text file. no idea why, I presume it's because I don't know the software... but this is deeply unsettling.


Answers:
author: VM
body: thanks guys, I do need a version control system and I was expecting Git to be a free replacement for Perforce. according to the Internet.. Git is supposed to do that, and it's really popular. I'll try a few more alternatives I guess.

thanks and happy new year!

comments: author: Seth
body: Well, it is free, and it is a version control system. It certainly wasn't designed to work like Perforce, it was designed by Linus Torvalds and the Linux community to be a distributed versioning system.In my experience, no two versioning systems are exactly alike. You should check out the Git Book to understand how Git works, so you can decide whether it works for your situation: <https://git-scm.com/book/en/v2>


author: Tim Crall
body: I'll agree with Seth again. Git has a different paradigm than some other source control systems, but it will probably work for you if you learn how it works and use it as it's meant to be used rather than trying to apply your current model onto it. It's rapidly becoming an industry standard. You can also probably get a plugin for whatever IDE you use that will allow you to use git within it, if that's what you want.I rarely ever browse the files in SourceTree and never open files from within it (although it can) - I usually have an editor open with all my files in one window and SourceTree runs separately in another windows, used only for source control operations such as committing, pushing, pulling, branching (although honestly the better I learn git, the less I bother with SourceTree at all)


author: VM
body: I just discovered Perforce is free for businesses smaller than 20 people : DYou are probably right Tim and maybe there's a way of working with this Git thing. And I'm not necessarily crazy about Perforce tbh. It's just that I used it in the past and it makes sense to me that a version control system should revolve around a powerful browser. I think ideally it should BE a browser \[with minimal UI and deep functionality : D \]


author: Seth
body: There are other GUIs out there. You might try smartgit (not free for commercial use): <http://www.syntevo.com/smartgit/> or (if you are on Windows) tortoisegit, which integrates into Windows Explorer: <https://tortoisegit.org/>


author: VM
body: Awesome, tortoisegit looks really interesting! I'll give it a try. Thx!


author: Tim Crall
body: It seems like you're expecting both SourceTree and git to be something other than what they are. SourceTree is just a GUI front end for git. It is not an IDE or a file browser and isn't meant to be.   

In git, which is a distributed version control system, "checked in" and "checked out" mean something different than what those terms mean in centralized version control systems. Because you are working on a fully local copy of the repo, there is no reason for it to lock files and prevent you from making changes. "Checked in" doesn't really exist in git and "checkout" just means to set the HEAD pointer and the contents of the working directory to a particular commit.

I think you need to take some time to learn about what these tools do and how they work and then come back and ask more specific questions if you have some.


author: Seth
body: You are right, SourceTree does not revolve around a file browser. It isn't intended to be a launching point for tasks related to editing files. Rather, it specializes at providing a summary of the status of your repository. If you want to see the whole tree, use the dropdowns above the file list to select "All" (instead of Pending), and "Tree View" (instead of "Flat List"). Be forewarned that SourceTree's tree view has some performance problems on Windows.

Log/History does give you the tree, with the most recent commits at the top. If you need to focus on changes to a particular file, you can use the search box in the File status view to find the filename you're looking for, then right-click and choose "Log Selected". This will show you a log of commits that have modified the file in question. Maybe the tree view mentioned above will solve this for you.

Not sure why double-clicking wouldn't work. Maybe the file type in question doesn't have a default program associated with it?

Before and After are only options for file types that can't be diffed. Text files will show a diff in the panel.

I don't understand what you mean about overwriting files that aren't checked out. Are you talking about files in the .git folder? Or files that aren't tracked by the repository (ignored files, maybe?) Short answer for any of those scenarios - that's just not how Git works.

Did you commit before reverting? Can you describe how you reverted?