예제 #1
0
TEST(libgit2, TGitPatches)
{
	CAutoTempDir tempdir;

	git_repository_init_options options = GIT_REPOSITORY_INIT_OPTIONS_INIT;
	options.flags = GIT_REPOSITORY_INIT_MKPATH | GIT_REPOSITORY_INIT_EXTERNAL_TEMPLATE;
	CAutoRepository repo;
	ASSERT_EQ(0, git_repository_init_ext(repo.GetPointer(), CUnicodeUtils::GetUTF8(tempdir.GetTempDir()), &options));

	CAutoConfig config;
	ASSERT_EQ(0, git_repository_config(config.GetPointer(), repo));
	EXPECT_EQ(0, git_config_set_string(config, "core.autocrlf", "true"));
	EXPECT_EQ(0, git_config_set_string(config, "core.safecrlf", "true"));

	CAutoRepository repo2(tempdir.GetTempDir());
	ASSERT_TRUE(repo2.IsValid());
	CAutoIndex index;
	ASSERT_EQ(0, git_repository_index(index.GetPointer(), repo2));

	CString testFile = tempdir.GetTempDir() + L"\\safecrlf-failure.txt";
	EXPECT_TRUE(CStringUtils::WriteStringToTextFile(testFile, L"crlf\r\ncrlf\r\n"));
	EXPECT_EQ(0, git_index_add_bypath(index, "safecrlf-failure.txt"));

	EXPECT_TRUE(CStringUtils::WriteStringToTextFile(testFile, L"lf\nlf\n"));
	EXPECT_EQ(-1, git_index_add_bypath(index, "safecrlf-failure.txt"));

	EXPECT_TRUE(CStringUtils::WriteStringToTextFile(testFile, L"crlf\r\ncr\rcrlf\r\n"));
	EXPECT_EQ(0, git_index_add_bypath(index, "safecrlf-failure.txt"));

	EXPECT_EQ(0, git_config_set_string(config, "core.autocrlf", "input"));
	CAutoRepository repo3(tempdir.GetTempDir());
	ASSERT_TRUE(repo3.IsValid());
	ASSERT_EQ(0, git_repository_index(index.GetPointer(), repo3));

	EXPECT_TRUE(CStringUtils::WriteStringToTextFile(testFile, L"crlf\r\ncrlf\r\n"));
	EXPECT_EQ(-1, git_index_add_bypath(index, "safecrlf-failure.txt"));
}
예제 #2
0
void main() {
	string thePath = "C:\\Users\\Martin\\Desktop\\TestingFolder";

	string timestamp = __TIMESTAMP__;
	cout << endl << "TimeStamp before concatenation: " << timestamp;
	for (string::iterator i = timestamp.begin(); i < timestamp.end(); ++i) {
		if (*i == ':' || *i == ' ' || *i == '  ')
			timestamp.erase(i);
	}
	cout << endl << "TimeStamp after concatenation: " << timestamp;
	string folderwithDate = thePath + timestamp;
	cout << endl << "Folder along with TimeStamp" << folderwithDate;
	std::wstring stemp = std::wstring(folderwithDate.begin(), folderwithDate.end());
	LPCWSTR sw = stemp.c_str();
	::SHCreateDirectoryEx(NULL, sw, NULL);
	vector<string> folders = FileSystem::Directory::getDirectories("C:\\Users\\Martin\\Desktop\\TestingFolder");
	for (auto folder : folders)
		cout << endl << folder;

	sPtr rootElement = makeTaggedElement("Dependency");
	for (auto folder : folders) {
		if (folder != "."&&folder != "..") {
			sPtr folderElement = makeTaggedElement("Package");
			folderElement->addAttrib("Name", folder);
			rootElement->addChild(folderElement);
			cout << endl << folder;
		}
	}

	XmlDocument xmlFolderDocument(makeDocElement(rootElement));
	std::ofstream file;
	file.open("PackagesDependency.xml", ios::ate);
	file << xmlFolderDocument.toString();
	file.close();


	string xmlString = xmlFolderDocument.toString();
	XmlDocument xml(xmlString);
	XmlDocument xmlInputFile("PackagesDependency.xml", XmlDocument::file);
	vector<sPtr> packages = xml.element("Package").select();
	cout << "No. of Packages found: " << packages.size();

	vector<string> foldersList;
	for (auto package : packages) {
		if (package->getAttrib("Name") != "."&&package->getAttrib("Name") != ".."&&package->getAttrib("Name") != "") {
			cout << "Hello\n";
			foldersList.push_back(package->getAttrib("Name"));
		}
	}
	vector<string> filesList;
	for (auto folder : foldersList) {
		std::vector<std::string> files = FileSystem::Directory::getFiles(thePath + "\\" + folder);
		filesList.insert(filesList.end(), files.begin(), files.end());
	}

	for (auto file : filesList)
		cout << endl << file;






	sPtr XMLroot = makeTaggedElement("Packages");

	sPtr packageElement = makeTaggedElement("Package");
	packageElement->addAttrib("Name", "Package 1");
	XMLroot->addChild(packageElement);


	sPtr versionElement = makeTaggedElement("Version");
	versionElement->addAttrib("Name", "1");
	versionElement->addAttrib("Directory", "Package1_1");
	versionElement->addAttrib("Status", "Closed");
	packageElement->addChild(versionElement);

	versionElement = makeTaggedElement("Version");
	versionElement->addAttrib("Name", "2");
	versionElement->addAttrib("Directory", "Package1_2");
	versionElement->addAttrib("Status", "Open");
	packageElement->addChild(versionElement);

	packageElement = makeTaggedElement("Package");
	packageElement->addAttrib("Name", "Package 2");
	XMLroot->addChild(packageElement);


	versionElement = makeTaggedElement("Version");
	versionElement->addAttrib("Name", "1");
	versionElement->addAttrib("Directory", "Package2_1");
	versionElement->addAttrib("Status", "Open");
	packageElement->addChild(versionElement);



	XmlDocument xmlMessage(makeDocElement(XMLroot));
	//cout << xmlMessage.toString();

	cout << endl;
	/*string fileSpec = "Package XML Structure.xml";
	XmlDocument file(fileSpec, XmlDocument::file);
	XmlDocument* filePointer = &file;*/

	/*Repository repo;
	repo.addPackageInfoXML(&xmlMessage);


	vector<PackageDetails> packages = repo.getPackageVersions("Package 1");
	cout << endl << "Printing all Packages with name: Package 1";
	for (auto packg : packages) {
	packg.print();
	}*/

	cout << endl;

	string xmlInputFileName = "PackagesStructure.xml";
	XmlDocument xmlMessagefromDisk(xmlInputFileName, XmlDocument::file);
	cout << endl << "Printing XML read from disk: " << xmlMessagefromDisk.toString();

	Repository repo2("C:\\Users\\Martin\\Desktop\\OODFolder");
	repo2.addPackageInfoXML(&xmlMessagefromDisk);
	repo2.closePackageVersion("Package 1", "2");
	cout << endl << "Printing XML read from disk after closing module status: " << xmlMessagefromDisk.toString();
	string xmlOutputFileName = "PackagesStructure.xml";

	cout << "Writing file to output: " << xmlOutputFileName;

	ofstream xmlFileWrite;
	xmlFileWrite.open(xmlOutputFileName, ios::ate);
	xmlFileWrite << xmlMessagefromDisk.toString();
	cout << endl;

	/*try
	{
	XmlDocument xmlMessagefromDisk(xmlInputFileName, XmlDocument::file);
	cout << "Printing XML read from disk: " << xmlMessagefromDisk.toString();
	}
	catch (std::exception& ex)
	{
	std::cout << "\n\n  " << ex.what();
	}*/

	cout << endl;

	/*PackageDetails package = repo.getLatestPackageVersion("Package 1");
	cout << endl << "Printing latest package version with name: Package 1";
	package.print();

	cout << endl;

	packages = repo.getPackageVersions("Package 2");
	cout << endl << "Printing all Packages with name: Package 2";
	for (auto packg : packages) {
	packg.print();
	}*/
	cout << endl;
}