Get Files in mass from Change History

This forum is now locked, since Gold Support is no longer offered.

Moderator: SourceGear

Locked
shaileshdwivedi
Posts: 17
Joined: Tue Oct 03, 2006 9:59 am

Get Files in mass from Change History

Post by shaileshdwivedi » Thu Nov 16, 2006 1:50 pm

We are into Concurrent Development with Vault 3.5.* and Visual Studio 2003 environment. We want ONLY the changed files to pull from Main Code Line and Push it to Branches. How can we do that? I do not want to use Merge Branches option as it goes through all the change history of the Folders and Not just the code change history.

Is there any way I search Hisotry for files modified betweem two dates, Get them all at once to my local machine or Move them all together to another Folder in the repository?

Thanks,
Shy
414.299.8676
Attachments
GetOnlyChangedFilesFromHistory.doc
(286 KiB) Downloaded 398 times

Beth
Posts: 8550
Joined: Wed Jun 21, 2006 8:24 pm
Location: SourceGear
Contact:

Post by Beth » Thu Nov 16, 2006 2:57 pm

I think to better answer your question I will need a little more information as to what your ultimate goal is here.

Currently, during a merge branches, one can select to only apply changes since the last merge or whatever identifier you have on it. Of course, it currently shows you everything, but it is on list of things to change in the future so that one only has to see things changed since the last merge.

You can go through history by date and get those files to your machine, but it's a little more difficult to move them to a different area in your repository.

shaileshdwivedi
Posts: 17
Joined: Tue Oct 03, 2006 9:59 am

Post by shaileshdwivedi » Thu Nov 16, 2006 3:23 pm

We have too many changes in the Merge Branches. More Over the Select Change History is very inconvinient to undestand what we want to carry forward. Example: I want to use only the files that have been edited during selected date range. I guess I will have to first restrict my self to up to only measured date range and then within that I will need to odd pick the items where the Action is "Check In". To see the action, I will have to double click the row and see If it is a ADD, DELETE, BRANCHED, RENAMED, MOVED OR CHECK IN.

My only objective is to get the code change between a defined Date and Time. Move the changes to Target branch. From the Folder history I can get this but that is too much of pain getting one file at a time. When I have changes like 300 files in one repository and I have to complete merge process for 3 different repositories then It is very very difficult to complete the merge within 1-2 hours.

Beth
Posts: 8550
Joined: Wed Jun 21, 2006 8:24 pm
Location: SourceGear
Contact:

Post by Beth » Thu Nov 16, 2006 5:00 pm

If I recall correctly, I believe you migrated to Vault from another product. Can you describe to me how you were doing it before so I can maybe have a developer look over this as well?

How often are you performing the merge branches?
What was the reasoning behind branching?
I ask these only because there sometimes are cases where a branch isn't needed, and a group can just do concurrent development in one folder instead.

shaileshdwivedi
Posts: 17
Joined: Tue Oct 03, 2006 9:59 am

Post by shaileshdwivedi » Thu Nov 16, 2006 9:46 pm

We migrated from VSS to Vault. However, we are trying for the Concurrent Development for the first time.

There are multiple teams based onsite and offshore to work on branches, so we wanted to have seprate Folder (Branch) for parallel releases.

We are at this time decided to go twice a week for Merge. This frequency will be revisited after some time.

At any point of time we will have at minimum 3 releases efforts going on.

lbauer
Posts: 9736
Joined: Tue Dec 16, 2003 1:25 pm
Location: SourceGear

Post by lbauer » Fri Nov 17, 2006 3:32 pm

There's no built-in way to just get changed files from one branch to another. Vault tries to merge all changes.

Since these merges are important and are done on a regular basis, you might want to write your own tool which runs a command
line diff (like GNU diff), which parses the diff output and feeds this
to the CLC in "batch mode".

In the meantime, try this as a possible workaround.

Set implicit (not inherited) working folders for the trunk and branch folders. Let's call them trunk_wkdir and branch_wkdir.

Get latest on both.

In the Vault GUI Client under Tools->Options->Concurrent Development Style, select Edit-Merge-Commit. This will allow files to have Edited status without being checked out.

Unset the working folders for trunk and branch.

Change the working directory for trunk to branch_wkdir. After a refresh, file status will be Edited, Old or NeedsMerge. Commit the Edited files.

Set the working directories back to what they were at the start. Do a get latest on Branch, as file status on some files will be Old.
Linda Bauer
SourceGear
Technical Support Manager

shaileshdwivedi
Posts: 17
Joined: Tue Oct 03, 2006 9:59 am

Post by shaileshdwivedi » Tue Nov 21, 2006 2:35 pm

Linda, I have been using the alternative what you have mentioned. That works but poses much risk of human error.

I wold be interested to lean more about GNU Diff commans that you have mentioned. Can you give me some more details about it or resources where I can explore it further.

lbauer
Posts: 9736
Joined: Tue Dec 16, 2003 1:25 pm
Location: SourceGear

Post by lbauer » Fri Nov 24, 2006 3:31 pm

Here's some additional information on GNU Diff:

http://www.gnu.org/software/diffutils/

Tools for Windows available here:

http://www.cygwin.com/

You'd have to do a GET to two local folders, use GNU diff, then parse the
results to determine what files have changed so you can get those files for the merge.
Linda Bauer
SourceGear
Technical Support Manager

Locked