Create package of latest revisions in Github - version-control

I have looked for the 'patch' system but I don't think this is what I want. I've also done a little research but I am not sure how I should ask the question.
I want to make a package with only the modified files of the latest revisions on Github.
I am wondering if there's a little application or some sort of commands I could use instead of going into each revisions and track files by files which have been modified to then pack them all into a zip/tar.gz file.
Reason we want to do this is obviously update a lot of websites using an older version, without having the trouble to go look up for each files that we're modified and pack them 'by hand'
Thanks.

Perhaps this might help? Exporting / Archiving changed files only in Git
Looks like a similar issue if I understand what you are trying to do!

Related

Perforce to Subversion migration

I am going to use p42svn for the first time and I have some doubts/questions regarding the same.
As I understand from the p42svn home page, the script p42svn.pl should be run from the machine that hosts the Perforce repository. This script generates an SVN readable dump file which can then be imported into SVN repository. Could you please confirm if my understanding is correct?
In our scenario, we do not want to have all the revisions of the files. We would only need the revisions for the past 1 year. Is it possible to achieve the same?
Instead of migrating all the projects from the Perforce Depot in one go, is it possible to migrate the Projects one by one?
Any help in this regard is highly appreciated.
I've never used the script myself, but reading the documentation leads me to:
yes.
Use the --changes switch. Find the relevant changes
with p4 changes -s submitted #2010/11/17,#now (that would give
you the changes starting a year ago, adjust to your needs)
My SVN knowledge is not good enough for this to comment on, but maybe the
answer to this question helps?

How should I start with tracking file changes/versions?

I've been working with a lot of my files on the go recently, and in the process often times accumulated several copies of files in different stages of completion/revision. I'm working on any number of projects at a given time, so it's not always easy to remember or figure out quickly which version I should continue working on.
What type of options would you recommend that allow me to track changes locally and if possible with files I work on while at a remote location? I've never worked with file versioning or tracking systems, so not sure what direction I should be looking in. I work mostly with HTML, CSS, and PHP.
Any help is awesomely appreciated! Thanks.
PS. Don't know if I should have this in a separate question but what options are available for the same type of thing, change tracking/logging for files on server? Preferably something that not only vaguely notes a file has been changed, but that tracks specific changes that have occurred in files.
It's seems to me that github is prefect choice for your requirement. You can create repository for maintain the history, it's easy to use and it is free
https://github.com/

Xcode 4, git and mergeing projectfile!

I have a problem!
We are working on an iPhone-app and are using git. The problem is that if someone changes something in the project(adds a file and so on..) and i try to pull that change, I have to merge it.
But the merge isn't painless, I often end up getting a corrupt project file and have to spend quite some time just to fix that.
Does anybody have a solution for this problem?
(Sorry for my crappy English)
Project files are notorious for conflicting. I would enable rerere (stands for "Reuse Recorded Resolution") so that if you have to redo conflict resolutions, you can at least have your decisions cached from the previous time you did them. An excellent write up on rerere is located here: http://progit.org/2010/03/08/rerere.html
If you have the inclination, the better thing to look at is an advanced topic of writing a custom merge driver. See "Defining a custom merge driver" in http://git-scm.com/docs/gitattributes
Hope this helps.
Three important steps:
Cause git to ignore everything in the project file except for the project.pbxproj under the .xcodeproj folder - use .gitignore for this.
before you pull a changed .pbxproj close your project. One of the biggest problems you face is that if you get a new version while Xcode has the project file open it can just save its "current" version over the changed one you want.
merges will sometimes result in spurious data like ">>>>YOURS" or ">>>>THEIRS" merge markers getting included in the project file. If you have to merge do it manually with a tool like filemerge where you can inspect each change and choose whether to include it or not.
If all this fails and you get a corrupted project file anyway
accept the version someone else submitted and redo your own changes, it's almost always easier and the link errors will remind you soon enough.
learn the value of frequent commits.

Is it possible to do a server-only rename in TFS source control?

As of late, my team and I have been hard at work turning our inherited source code into something we can live with. Part of this process is to make the source control image look a little more like what most people might expect to find when browsing a repository.
The original structure contains a branch called "Branches", the contents of which are what one would find in a "Tags" folder in systems like Subversion. Since "Branches" is a bit too non-specific for my tastes, I wanted to change it to "Tags" -- but it would seem that I cannot do that unless I create a workspace mapped to the root of the repository and then create a working copy from it. On this project that is a huge file transfer (lots of old tags).
Please tell me that I have just overlooked the obvious and should really spend more time reading the instructions. Is there no simple way to do this without pulling everything to the client first? I really enjoy most aspects of TFS, but this is something that would have taken 15 seconds or less in Subversion -- so I hope I'm just missing something.
Thanks in advance to any responders.
You don't need to get the whole folder but you need to get the folder itself. You can't do this from within the IDE but you can from the command-line:
tf get c:\dev\
Because we haven't specified the /recursive option it will only get the immediate children of c:\dev\, which would be folders such as trunk and branches.
For there you can rename the folder:
tf rename c:\dev\branches c:\dev\tags
And then check-in the rename.
Regards,
William D. Bartholomew (Team System MVP)

TFS - Branching for experimental development: Solution fails to load

Disclaimer: I'm stuck on TFS and I hate it.
My source control structure looks like this:
/dev
/releases
/branches
/experimental-upgrade
I branched from dev to experimental-upgrade and didn't touch it. I then did some more work in dev and merged to experimental-upgrade. Somehow TFS complained that I had changes in both source and target and I had to resolve them. I chose to "Copy item from source branch" for all 5 items.
I check out the experimental-upgrade to a local folder and try to open the main solution file in there. TFS prompts me:
"Projects have recently been added to this solution. Would you like to get them from source control?
If I say yes it does some stuff but ultimately comes back failing to load a handful of the projects. If I say no I get the same result.
Comparing my sln in both branches tells me that they are equal.
Can anyone let me know what I'm doing wrong? This should be a straightforward branch/merge operation...
TIA.
UPDATE:
I noticed that if I click "yes" on the above dialog, the projects are downloaded to the $/ root of source control... (i.e. out of the dev & branches folders)
If I open up the solution in the branch and remove the dead projects and try to re-add them (by right-clicking sln, add existing project, choose project located in the branch folder, it gives me the error...
Cannot load the project c:\sandbox\my_solution\proj1\proj1.csproj, the file has been removed or deleted. The project path I was trying to add is this: c:\sandbox\my_solution\branches\experimental-upgrade\proj1\proj1.csproj
What in the world is pointing these projects outside of their local root? The solution file is identical to the one in the dev branch, and those projects load just fine. I also looked at the vspscc and vssscc files but didn't find anything.
Ideas?
#Ben
You can actually do a full delete in TFS, but it is highly not recommended unless you know what you are doing. You have to do it from the command line with the command tf destroy
tf destroy [/keephistory] itemspec1 [;versionspec]
[itemspec2...itemspecN] [/stopat:versionspec] [/preview]
[/startcleanup] [/noprompt]
Versionspec:
Date/Time Dmm/dd/yyyy
or any .Net Framework-supported format
or any of the date formats of the local machine
Changeset number Cnnnnnn
Label Llabelname
Latest version T
Workspace Wworkspacename;workspaceowner
Just before you do this make sure you try it out with the /preview. Also everybody has their own methodology for branching. Mine is to branch releases, and do all development in the development or root folder. Also it sounded like branching worked fine for you, just the solution file was screwed up, which may be because of a binding issue and the vssss file.
#Nick: No changes have been made to this just yet. I may have to delete it and re-branch (however you really can't fully delete in TFS)
And I have to disagree... branching is absolutely a good practice for experimental changes. Shelving is just temporary storage that will get backed up if I don't want to check in yet. But this needs to be developed while we develop real features.
Without knowing more about your solution setup I can't be sure. But, if you have any project references that could explain it. Because you have the "experimental-upgrade" subfolder under "branches" your relative paths have changed.
This means when VS used to look for your referenced projects in ..\..\project\whatever it now has to look in ..\..\..\project\whatever. Note the extra ..\
To fix this you have to re-add your project references. I haven't found a better way. You can either remove them and re-add them, or go to the properties window and change the path to them, then reload them. Either way, you'll have to redo your references to them from any projects.
Also, check your working folders to make sure that it didn't download any of your projects into the wrong folders. This can happen sometimes...
A couple of things. Are the folder structures the same? Can you delete and readd the project references successfully?
If you create a solution and then manually add all of the projects, does that work. (That may not be feasable - we have solutions with over a hundred projects).
One other thing (and it may be silly) - after you did the branch, did you commit it? I'm wondering if you branched and didn't check it in, and then merged, and then when you tried to check-in then, TFS was mighty confused.
#Kevin:
This means when VS used to look for your referenced projects in ....\project\whatever it now has to look in ......\project\whatever. Note the extra ..\
You may be on to something here, however it doesn't explain why some projects load and others do not. I haven't found a correlation between them yet.
I think I'll try to re-add the projects and see if that works.
#Cory:
I think that's what I'm going to try... I have about 20 projects and 8 or so aren't loading. The folder structures are identical from root... ie: there aren't any references outside of DEV.